測試中經常出現明明有控件或者文本,但是由於界面沒有載入完成或者其他原因導致assert判斷的結果失敗。或者兩次執行,一次成功,一次失敗的情況。所以需要加入這些等待某些控件或者文本載入的方法,以加強程序執行的健壯性。
sleep是固定長度時間的等待,waitFor則是等待某個控件或者文本載入後再進行下一步操作。
故兩者都能用的情況下,推薦waitFor
sleep,固定時間的等待
void sleep(int time)
讓測試停止若干時間以便進行下一步操作
參數:
time-停止的時間,單位是毫秒,如sleep(2000),是停止了2秒鐘
返回:
無
waitFor,等待特定的某個控件或者文本載入後再進行下一步操作
boolean waitForActivity ( Class<extends android.app.Activity > activityClass | String name [, int timeout])
等待某個activity載入以進行下一步操作
參數:
activityClass-定位activity的class
name-定位activity的名稱
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前出現了activity
false-過了失效時間仍未找到
boolean waitForView ( Class<T> viewClass [, int timeout, boolean scroll])
等待某個view載入以進行下一步操作,通過view的class定位
參數:
viewClass-定位view的class
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
scroll-是否允許滾動搜索,true表示支持,false表示只能在當前屏幕內查找
返回:
true-在失效時間前出現了view
false-過了失效時間仍未找到
boolean waitForView (int id [, int minimumNumberOfMatches, int timeout, boolean scroll])
等待某個view載入以進行下一步操作,通過view的id定位
參數:
id-定位view的id
minimumNumberOfMatches-最小指定多少纔可以往下進行,0表示1個或者多個
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
scroll-是否允許滾動搜索,true表示支持,false表示只能在當前屏幕內查找
返回:
true-在失效時間前出現了view
false-過了失效時間仍未找到
boolean waitForView ( android.view.View.view view [, int timeout, boolean scroll])
等待某個view載入以進行下一步操作,通過view名稱定位
參數:
view-定位view的名稱
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
scroll-是否允許滾動搜索,true表示支持,false表示只能在當前屏幕內查找
返回:
true-在失效時間前出現了view
false-過了失效時間仍未找到
等待某個文本載入以進行下一步操作
text-等待的文本
minimumNumberOfMatches-最小指定多少纔可以往下進行,0表示1個或者多個
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
scroll-是否允許滾動搜索,true表示支持,false表示只能在當前屏幕內查找
onlyVisible-只有可見的纔會被統計
返回:
true-在失效時間前出現了view
false-過了失效時間仍未找到
boolean waitForDialogToOpen([int timeout])
等待對話框打開
參數:
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前打開了dialog
false-過了失效時間仍未打開
boolean waitForDialogToClose([int timeout])
等待對話框關閉
參數:
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前關閉了dialog
false-過了失效時間仍未關閉
boolean waitForWebElement (By by [, int minimumNumberOfMatches, int timeout, boolean scroll])
等待某個web控件載入以進行下一步操作
by-定位web控件的by屬性
minimumNumberOfMatches-最小指定多少纔可以往下進行,0表示1個或者多個
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
scroll-是否允許滾動搜索,true表示支持,false表示只能在當前屏幕內查找
返回:
true-在失效時間前出現了web控件
false-過了失效時間仍未找到
boolean waitForFragmentById (int id [, int timeout])
等待Fragment載入以進行下一步操作,以id定位Fragment
參數:
id-定位Fragment的id
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前出現了Fragment
false-過了失效時間仍未找到
boolean waitForFragmentByTag (String id [, int timeout])
等待Fragment載入以進行下一步操作,以tag定位Fragment
參數:
tag-定位Fragment的tag
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前出現了Fragment
false-過了失效時間仍未找到
boolean waitForLogMessage (String logMessage [, int timeout])
等待日誌信息載入以進行下一步操作
參數:
logMessage-等待加載的日誌
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前出現了logMessage
false-過了失效時間仍未找到
boolean waitForCondition (Condition condition, int timeout)
等待某種條件加載以進行下一步操作
參數:
condition-需要滿足的條件
timeout-失效時間,如果過了這個時間就不再等待,認爲失敗。單位毫秒,默認20秒
返回:
true-在失效時間前出現了滿足condition的條件
false-過了失效時間仍未找到
注:Condition是一個interface,裏面只有一個方法isSatisfied () ,用於多條件的等待