Appium获取Toast消息
2020-02-26 22:58
88 查看
Android中的Toast是一种简易的消息提示框。且一般显示3s左右的时间就消失。他属于系统的一种提示,而不是应用上的。所以使用定位元素工具定位是获取不到Toast元素的。
定位Toast元素需要借助UiAutomator2 ,automationName:uiautomator2;由于他的设计方式,所以在getPageSource 是查找不到的。在定位Toast元素时必须使用xpath定位方式。
使用xpath定位有两种方法,一种是借助Toast的className:android.widget.Toast;另一种是借助文本内容。所以定位写法有两种形式:
driver.find_element_by_xpath("//*[@class='android.widget.Toast']")
driver.find_element_by_xpath("//*[@text='xxxxx']")
在app UI自动化中,Toast是常用的一种文言提示方法。所以对此进行封装,便于以后调用。
# coding:utf-8 from appium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def get_toast(driver, text=None, timeout=5, poll_frequency=0.5): """ get toast :param driver: driver :param text: toast text :param timeout: Number of seconds before timing out, By default, it is 5 second. :param poll_frequency: sleep interval between calls, By default, it is 0.5 second. :return: toast """ if text: toast_loc = ("//*[contains(@text, '%s')]" %text) else: toast_loc = "//*[@class='android.widget.Toast']" try: WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(('xpath', toast_loc))) toast_elm = driver.find_element_by_xpath(toast_loc) return toast_elm except: return "Toast not found"
解释:WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(('xpath', toast_loc)))
在这只是相当于一个频率执行,在固定的时间中判断Toast是否存在。当然,如果在初始化driver时设置了driver.implicitly_wait(30),则这儿的查找可以注释掉。
在这儿这样设计的目的只是为了避免代码执行太快或太慢,获取不到Toast,增强代码的健壮性而已
调用也很简单,如果是需要判断Toast是否出现,则只需要判断 get_toast()为True。
如果要获取Toast文本,则添加 text,get_toast().text
相关文章推荐
- Appium获取toast消息遇到的问题(一)
- Appium+python自动化获取toast消息(windows版)的方法
- appium无法获取toast的解决方案
- appuim+python获取android的toast消息的方法
- appium框架怎么获取toast?
- 【appium】获取toast内容
- appium自动化测试中获取toast消息的解决方法
- appium自动化测试中获取toast消息的解决方法【转】
- appium测试-如何获取Toast弹框消息(Android )
- Appium1.6.3获取安卓页面的toast
- appium 获取android 粘贴板上的内容
- 百度搜索,获取第一手消息?
- appium简明教程(9)——如何获取android app的Activity
- Android中的消息通知Toast和Notification
- perl 微信机器人获取消息
- Android开发中Toast显示消息的方法小结
- Posix消息队列的基本操作——获取消息属性
- SQL Server:如何在Service Broker发送消息验证失败后获取源消息
- C#_在按钮存在的状态获取按键消息
- Android中Toast显示消息用法