前言
Airtest 寫app自動化的時候,頁面上的有些元素並不是固定的顯示的,有的會等待一定時間才會出現。
於是可以用wait方法等待元素出現,再進一步操作
wait 等待元素
wait方法作用,一直間隔interval秒去查找指定的的v對象,直到時間超過timeout后未找到就報TargetNotFoundError錯誤,期間如果每次的間隔查找遇到錯誤就調用inervalfunc方法
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,直接點-我的 按鈕也是可以成功的(備注:本人的聯想G470太慢了,沒成功)
touch 本身也會在頁面上輪詢查找元素,默認20秒找不到,才會報:TargetNotFoundError。
也可以在touch之前,先加上wait等待元素出現
備注:本人電腦實在太慢,加了sleep(20)才不報錯
touch 本身也會在頁面上輪詢查找元素,默認20秒找不到,才會報:TargetNotFoundError。
也可以在touch之前,先加上wait等待元素出現
timeout 等待超時
什么情況下可以用到wait呢?如果頁面元素查找大於20秒的情況,這時候就可以用wait等待元素。
timeout 參數可以設置等待時間,如果是針對單個比較特殊的元素,可能元素出現的時間是不固定的,在頁面上大於20秒,可以通過設置timeout時間來等待久一點;
wait 返回v對象
wait 方法查找到元素,返回 v 對象,也就是圖片的中心點坐標。
前面的touch 方法傳入參數是v對象(或圖片中心點坐標),於是wait和touch 是可以結合起來使用的。
可以先wait返回一個對象
也可以寫成一行,直接touch 傳 wait 返回的對象
intervalfunc 參數
intervalfunc 參數是在每次嘗試查找相應匹配失敗后調用func函數,這對於一個 listview 頁面需查找到指定元素的時候非常方便。
可以寫個滑動頁面的函數,每次找不到就調用一次滑動頁面,直到找到指定元素為止。