安卓自動(dòng)化測(cè)試總結(jié)(三)--WaitFor方法、超時(shí)時(shí)間

使用WaitForView提高控件點(diǎn)擊成功率

? ? 開發(fā)界面自動(dòng)化的代碼時(shí)顿膨,難以避免的一個(gè)問(wèn)題是锅锨,因某些原因?qū)е驴丶訒r(shí)顯示,而這時(shí)點(diǎn)擊控件或在控件中輸入文本時(shí)恋沃,就會(huì)導(dǎo)致失敗或異常必搞。

? ? 我們通常的做法是,在代碼前添加一個(gè)等待語(yǔ)句囊咏,在該等待之后恕洲,控件應(yīng)該能出現(xiàn)。如梅割,

solo.sleep(10000);//等待10秒

solo.clickOnView(view)霜第;

? ? 不過(guò),由于等待時(shí)間并不確定户辞,認(rèn)為較長(zhǎng)的等待時(shí)間泌类,也許還不夠長(zhǎng),仍然會(huì)有對(duì)應(yīng)控件尚未出現(xiàn)的情況底燎;而如果每個(gè)等待都設(shè)置較長(zhǎng)的等待時(shí)間刃榨,又會(huì)造成大量的時(shí)間浪費(fèi),導(dǎo)致自動(dòng)化運(yùn)行效率不高双仍。因而枢希,我們封裝時(shí),可考慮封裝成:

if(solo.waitForView(view)) {

solo.clickOnView(view);

}

? ? 上面的判斷朱沃,如果能夠找到對(duì)應(yīng)的view苞轿,則不用等待,立即返回true逗物;如果在默認(rèn)超時(shí)時(shí)間(20秒)前找到view搬卒,則也返回true;否則返回false敬察。通過(guò)這個(gè)判斷秀睛,可以比設(shè)置常量效率高很多,因?yàn)檫@既可以保證在較長(zhǎng)時(shí)間出現(xiàn)控件時(shí)莲祸,仍能找到控件蹂安,也能在立即出現(xiàn)控件后椭迎,不用等待即可進(jìn)行后續(xù)操作。

? ? 有時(shí)田盈,默認(rèn)的20秒可能不夠畜号,或者控件不在當(dāng)前界面,可以考慮封裝成

if(solo.waitForView(view)允瞧,timeout時(shí)間简软,true) {

solo.clickOnView(view);

}

這時(shí),超時(shí)時(shí)間就是timeout時(shí)間述暂,而不是默認(rèn)的了痹升。

Robotium提供的WaitFor方法

? ? 為了提高找到對(duì)應(yīng)界面控件的成功率,Robotium提供了很多WaitFor方法畦韭,這些方法如包括waitForText疼蛾、waitForView、waitForWebElement艺配、waitForCondition察郁、waitForActivity、waitForLogMessage转唉、waitForFragmentById皮钠、waitForDialogToClose、waitForDialogToOpen等赠法。其中麦轰,各種不同參數(shù)的WaitForView方法如下,其他方法類似期虾,但參數(shù)種類不如WaitForView方法多:

boolean?waitForView(Class?viewClass)

? ? ?Waits for a View? matching the specified class.

boolean?waitForView(Class?viewClass,? int?minimumNumberOfMatches, int?timeout)

boolean?waitForView(Class?viewClass,? int?minimumNumberOfMatches, int?timeout, boolean?scroll)

boolean?waitForView(int?id)

boolean?waitForView(int?id, int?minimumNumberOfMatches, int?timeout)

boolean?waitForView(int?id, int?minimumNumberOfMatches, int?timeout, boolean?scroll)

boolean?waitForView(Objecttag)

boolean?waitForView(Objecttag,? int?minimumNumberOfMatches, int?timeout)

boolean?waitForView(Objecttag,? int?minimumNumberOfMatches, int?timeout, boolean?scroll)

boolean?waitForView(android.view.View?view)

boolean?waitForView(android.view.View?view,int?timeout, boolean?scroll)

超時(shí)時(shí)間

? ? Robotium的默認(rèn)超時(shí)時(shí)間為20s原朝,這個(gè)時(shí)間也是可以改變的驯嘱,而且有最大超時(shí)和最小超時(shí)镶苞。最大超時(shí)就是應(yīng)用于我們前面提到的waitFor方法。

TimeOut類提供的方法如下:

static int?getLargeTimeout()

? ? ?Gets the default? timeout length of the waitFor methods.

static int ?getSmallTimeout()

? ? ?Gets the default? timeout length of the get, is, set, assert, enter, type and click methods.

static void ?setLargeTimeout(int?milliseconds)

? ? ?Sets the default? timeout length of the waitFor methods.

static void ?setSmallTimeout(int?milliseconds)

? ? ?Sets the default? timeout length of the get, is, set, assert, enter, type and click methods.

? ? 雖然Robotium本身提供的方法的穩(wěn)定性和成功率越來(lái)越高鞠评,但針對(duì)自己的產(chǎn)品茂蚓,我們可以使用Robotium提供的WaitFor方法和超時(shí)時(shí)間等,對(duì)不同的界面及控件類型剃幌,采用更好的實(shí)現(xiàn)策略聋涨;通過(guò)組合這些方法,進(jìn)行恰當(dāng)?shù)姆庋b负乡,可以即提高自動(dòng)化執(zhí)行的效率牍白,又能提高執(zhí)行的成功率,也提高代碼編寫的效率抖棘。感興趣的茂腥,可以自己也試下狸涌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市最岗,隨后出現(xiàn)的幾起案子帕胆,更是在濱河造成了極大的恐慌,老刑警劉巖般渡,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懒豹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡驯用,警方通過(guò)查閱死者的電腦和手機(jī)脸秽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蝴乔,“玉大人豹储,你說(shuō)我怎么就攤上這事√哉猓” “怎么了剥扣?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铝穷。 經(jīng)常有香客問(wèn)我钠怯,道長(zhǎng),這世上最難降的妖魔是什么曙聂? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任晦炊,我火速辦了婚禮,結(jié)果婚禮上宁脊,老公的妹妹穿的比我還像新娘断国。我一直安慰自己,他們只是感情好榆苞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布稳衬。 她就那樣靜靜地躺著,像睡著了一般坐漏。 火紅的嫁衣襯著肌膚如雪薄疚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天赊琳,我揣著相機(jī)與錄音街夭,去河邊找鬼。 笑死躏筏,一個(gè)胖子當(dāng)著我的面吹牛板丽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趁尼,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼埃碱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碴卧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起乃正,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤住册,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瓮具,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荧飞,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年名党,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叹阔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡传睹,死狀恐怖耳幢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情欧啤,我是刑警寧澤睛藻,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站邢隧,受9級(jí)特大地震影響店印,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜倒慧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一按摘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纫谅,春花似錦炫贤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)承边。三九已至吻氧,卻和暖如春颠印,著一層夾襖步出監(jiān)牢的瞬間扣甲,已是汗流浹背跳芳。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工菊碟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缠俺,地道東北人苹粟。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓有滑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嵌削。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毛好,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容