前言
Airtest 寫app自動化的時候,頁面上的有些元素並不是固定顯示的,有的會等待一定時間才會出現。
於是可以用wait方法等待元素出現,再進一步操作
wait 等待元素
wait方法作用,一直間隔interval秒去查找指定的v對象,直到時間超過timeout后未找到就報TargetNotFoundError錯誤,期間如果每次的間隔查找遇到錯誤就調用intervalfunc方法
wait(v,timeout=TIMEOUT,interval=0.5,intervlfunc=func)
等待設備屏幕上的模板圖片
參數:
- v :圖片
- timeout :等待匹配的時間間隔,默認為20s
- interval :每次匹配的時間間隔,默認0.5秒(單位:秒)
- intervalfunc :在每次嘗試查找相應匹配失敗后調用func函數
return: 找到圖片則返回(v對象)圖片中心點坐標,否則拋異常:TargetNotFoundError
wait 等待示例
touch 操作元素會在頁面上查找 20 秒,大部分情況下 20 秒是足夠找到元素的,所以一般也不用 wait 方法。
比如啟動app后,啟動頁面會有3秒的廣告(右側啟動app出現的廣告)
不加wait,直接點-我的 按鈕也可以點擊成功
touch 本身也會在頁面上輪詢查找元素,默認20秒找不到,才會報:TargetNotFoundError。
這在前面一篇touch講過https://www.cnblogs.com/yoyoketang/p/14808070.html
也可以在touch之前,先加上wait等待元素出現
在大部分情況下,wait 用不上
timeout 等待超時
什么情況下可以用到 wait 呢?如果頁面元素查找大於20秒的情況,這時候就可以用 wait 等待元素。
timeout 參數可以設置等待時間,如果是針對單個比較特殊的元素,可能元素出現的時間是不固定的,在頁面上大於20秒,可以通過設置timeout 時間來等待久一點
wait 返回 v 對象
wait 方法查找到元素,返回 v 對象,也就是圖片的中心點坐標。
前面的touch 方法傳入參數是 v對象 (或圖片中心點坐標),於是wait 和 touch 是可以結合起來使用的
可以先wait返回一個對象
也可以寫成一行,直接touch 傳 wait 返回的對象
intervalfunc 參數
intervalfunc 參數是在每次嘗試查找相應匹配失敗后調用func函數,這對於一個 listview 頁面需查找到指定元素的時候非常方便。
可以寫個滑動頁面的函數,每次找不到就調用一次滑動頁面,直到找到指定元素為止。