Appium自动化测试中获取Toast信息操作
作者:测试之路king 发布时间:2022-05-12 07:10:48
标签:Appium,获取,Toast
Toast简介
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。
Toast 定位
Appium 1.6.3开始支持识别Toast内容,主要是基于UiAutomator2,因此需要在Capablity配置参数
启动参数配置
desired_caps['automationName']='uiautomator2'
环境
Appium-Python-Client: 2.1.2
selenium: 4.1.0
Appium:v1.20.2
测试应用
网易云课堂
测试设备
夜神模拟器 Android 7.1.2
测试场景
进入登录界面输入用户名和错误的密码,获取Toast内容
代码实现
# _*_ coding:utf-8 _*_
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
desired_caps = {
"platformName": "Android",
"platformVersion": "7.1.2",
"udid": "127.0.0.1:62001",
"appPackage": "com.netease.edu.study",
"appActivity": "com.netease.edu.study.activity.ActivityWelcome",
"noReset": True,
'automationName': 'uiautomator2'
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
driver.implicitly_wait(30)
# 点击我的菜单
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tab_account").click()
# 点击登录注册按钮
driver.find_element(AppiumBy.XPATH, "//*[@text='登录/注册']").click()
# 点击手机号码登录
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/login_phone_login").click()
# 输入手机号码
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tv_phone_num").send_keys("132****475")
# 输入错误密码
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/tv_phone_pwd").send_keys("wy12345")
# 点击登录按钮
driver.find_element(AppiumBy.ID, "com.netease.edu.study:id/button").click()
# 获取toast提示
toast_text = driver.find_element(AppiumBy.XPATH, "//*[@class=\"android.widget.Toast\"]").text
print(toast_text)
执行结果:
说明
toast 获取主要使用一个通用的class属性获取,通过xpath的方式://*[@class="android.widget.Toast"]
toast信息存在是否存在判断封装
代码
def is_toast_exist(driver,text,timeout=20,poll_frequency=0.5):
'''is toast exist, return True or False
:Agrs:
- driver - 传driver
- text - 页面上看到的文本内容
- timeout - 最大超时时间,默认20s
- poll_frequency - 间隔查询时间,默认0.5s查询一次
:Usage:
is_toast_exist(driver, "看到的内容")
'''
try:
toast_loc = ("xpath", ".//*[contains(@text,'%s')]"%text)
WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
return True
except:
return False
toast信息内容获取
代码
def is_toast_exist(driver,timeout=20,poll_frequency=0.5):
'''is toast exist, return toast_text or None
:Agrs:
- driver - 传driver
- timeout - 最大超时时间,默认20s
- poll_frequency - 间隔查询时间,默认0.5s查询一次
:Usage:
is_toast_exist(driver)
'''
try:
toast_loc = ("xpath", "//*[@class=\"android.widget.Toast\"]")
WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
toast_text = driver.find_element(AppiumBy.XPATH, "//*[@class=\"android.widget.Toast\"]").text
return toast_text
except:
return None
来源:https://ceshizhilu.blog.csdn.net/article/details/122693435


猜你喜欢
- 本文实例讲述了python简单的函数定义和用法。分享给大家供大家参考。具体分析如下:这里定义了一个温度转换的函数及其用法。def conve
- 这个问题困扰了我很长很长的时间,在跨域获取数据的时候就要用到服务器端的对象,以前一直用的是Msxml.XMLHTTP。但是问题太多了,特别严
- word2vec介绍word2vec官网:https://code.google.com/p/word2vec/word2vec是googl
- 内容摘要:浏览器不兼容这个难题,一直是网页设计师们头痛的事情。ie7.0的面世,尚且不论他是否较之ie6.0进步, ie7和ie6
- 前言keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。在组件切换过程中将状态保留在内
- 前端模块化关注前端技术发展的各位亲们,肯定对模块化开发这个名词不陌生。随着前端工程越来越复杂,代码越来越多,模块化成了必不可免的趋势。各种标
- 后来看到博客园在用NorthScale Memcached Server(官方站点:http://www.couchbase.com/pro
- 我们常见的RGB图像通常只有R、G、B三个通道,在图像处理的过程中会遇到往往需要向图像中添加透明度信息,如公司logo的设计,其输出图像文件
- 1。下载mysql-noinstall-5.1.33-win32.zip,然后解压 2。复制my-huge配置文件为my.ini 在 [my
- JavaScript封装弹框插件的具体代码,供大家参考,具体内容如下知识点1、document.querySelector() 方法quer
- python生成遍历暴力破解密码(这里已遍历暴力破解rar为例,只提供生成密码以及遍历密码)这个也就是提供一个思路,需求是这样的,我XX的闺
- 之前在网上查找了很多相关资料,有说设置icon高度来支持item的,有说要添加自己写指定高度的view来填充的,但是对于一个只有文字的Qco
- 前言:由程序去执行的操作不允许有任何误差,有些时候在测试的时候未出现问题,但是放到服务器上就会报错,而且打印的错误信息并不十分明确。这时,我
- 本文实例为大家分享了python实现库存商品管理系统的具体代码,供大家参考,具体内容如下题目要求:请设计一个商品管理系统,程序要求根据用户输
- 一、更改my.cnf配置文件1.用命令编辑/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.c
- keras模型可视化:model:model = Sequential()# input: 100x100 images with 3 ch
- 本文实例讲述了Python递归遍历列表及输出的实现方法。分享给大家供大家参考。具体实现方法如下:def dp(s): if is
- 本文实例讲述了Python实现栈的方法。分享给大家供大家参考,具体如下:前言使用Python 实现栈。两种实现方式:基于数组 - 数组同时基
- #! -*- coding:utf-8 -*- import string s = 'Ye
- 本文实例讲述了Python实现将16进制字符串转化为ascii字符的方法。分享给大家供大家参考,具体如下:字符串456e633064316e