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内容
代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# _*_ 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信息存在是否存在判断封装
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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信息内容获取
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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 |
到此这篇关于Appium自动化测试中获取Toast信息操作的文章就介绍到这了,更多相关Appium 获取Toast内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://ceshizhilu.blog.csdn.net/article/details/122693435