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提示信息對不對,一個字都不能錯啊,不然找不到的,我就是因為一個文字寫錯,糾結了好幾天都不知道是什么原因,淚奔,終於有人指出了我的問題,改好就找到了。