toast是什么?
想要获取toast的小伙伴们,肯定知道这个是一个什么玩意,例行还是加一个图,加以解释,下图的就是传说中的toast,它有一个特点,出现时间特别短,很难通过定位元素去获取这个toast。
通过XPTH + Contains +text 来定位toast
不能通过明确的元素定位来获取,那要怎么获取到toast呢?在做app自动化的时候,toast出现率非常高,所以必须要获取到toast,方便后面的断言。那要怎么通过什么方式获取呢?
答案就是:采用Xpath + contains + text 进行定位,不能定位到具体的元素,所以只能通过显示的text来找了
//*[contains(text(),"账号或密码不能为空")]
python -appium -真机 是怎样工作的?
知道通过什么方式获取之前,我们还需要知道 python -》appium + 真机或模拟机 是怎样工作的?
需要获取到toast的前提条件:
- 安卓版本要在5.0以上
- 设置 desired_caps['automationName'] = 'Uiautomator2'
- 判断toast是否存在:presence_of_element_located(注意不能使用visibility_of_element_located)
检查是否必须的两个文件:
在模拟器或真机会生成两个用来获取toast的文件,检查一下模拟机或真机有没有这两个文件
贴上最后的实现的代码:如果toast出现的时间很短,需要将等待时间的轮询的时间调小
WebDriverWait(driver, 8, 0.2).until(EC.presence_of_element_located((MobileBy.XPATH, '//*[contains(@text,"xxxx")]')))
最后给大家一个提示:前置条件都设置好了,模拟器或真机也有那两个获取toast的文件了,就要检查写的toast提示信息对不对,一个字都不能错啊,不然找不到的,我就是因为一个文字写错,纠结了好几天都不知道是什么原因,泪奔,终于有人指出了我的问题,改好就找到了。