时间:2022-09-01 09:26:53 | 栏目:Python代码 | 点击:次
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。
Appium 1.6.3开始支持识别Toast内容,主要是基于UiAutomator2,因此需要在Capablity配置参数
desired_caps['automationName']='uiautomator2'
环境
测试应用
测试设备
测试场景
代码实现
# _*_ 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"]
代码
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
代码
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