Selenium WebDriver隱式等待影響整個自動化測試時間的解決方案

Web UI自動化時们颜,很多地方需要判斷當(dāng)前頁面中元素是否存在吕朵,如果存在就返回true猎醇,不存在就返回false.

public boolean isElementExist(String xpath){
        int i = driver.findElements(By.xpath(xpath)).size();
        return i==0?false:true;
    }

當(dāng)測試用例比較多時,上述方法被頻繁調(diào)用努溃,當(dāng)當(dāng)前頁面中不存在要查找的元素時硫嘶,Webdriver會默認(rèn)等待20s,頻繁出現(xiàn)元素找不到的情況梧税,自動化執(zhí)行時長就會不斷不拉長沦疾,本來可以5個小時執(zhí)行完的用例,結(jié)果需要20多小時第队,如果網(wǎng)速不快時哮塞,甚至需要更長的時間。這并不是UI自動化想要的結(jié)果凳谦。那么如何解決這個問題呢忆畅?

上述提到Webdriver找不到元素時,會默認(rèn)等待20s尸执,這里的20s在哪里設(shè)置的呢家凯?
熟悉 Webdriver源碼的都知道,在啟動瀏覽器之前如失,需要加載對應(yīng)瀏覽器的driver绊诲。

public class LoadChrome {
    public static void main(String[] args) {
        // 設(shè)置谷歌瀏覽器引擎位置
        System.setProperty("webdriver.chrome.driver", "./Tools/chromedriver.exe");
 
        // 初始化一個谷歌瀏覽器驅(qū)動
        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        // 使用get方法打開一個網(wǎng)站
        driver.get("https://www.baidu.com");
        // 獲取當(dāng)前網(wǎng)頁的title
        System.out.println("當(dāng)前網(wǎng)頁的title:" + driver.getTitle());
        System.out.println(driver.getCurrentUrl());
 
        // 關(guān)閉瀏覽器
        driver.quit();
    }
}

其中 driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 設(shè)置了全局的等待時間,即:所有WebDriver執(zhí)行所有命令的超時時間都為20s褪贵。所以當(dāng)上面isElementExist方法找不到元素時掂之,就會繼續(xù)等待20s確定后才拋出異常。這樣就大大拉長了整個自動化測試執(zhí)行的時間脆丁。這個設(shè)置是全局的世舰,為隱式等待。

隱式等待比強(qiáng)制等待智能偎快,因為在整個自動化測試的腳本中看不到隱式等待的語句冯乘。但它會在每個頁面加載的時候自動等待;隱式等待只需要聲明一次晒夹,一般在打開瀏覽器后進(jìn)行聲明裆馒。聲明之后對整個WebDriver的實例的生命周期都有效,后續(xù)無需重復(fù)聲明丐怯。如果不設(shè)置全局元素超時時間喷好,默認(rèn)超時時間為0 。

隱式等待使用implicitlyWait方法读跷,來等待頁面加載完成梗搅,implicitlyWait(10),超時時間10s,10秒內(nèi)一旦加載完成无切,就執(zhí)行下一條語句荡短;如果10秒內(nèi)頁面都沒有加載完,就超時拋出異常哆键。

那么掘托,當(dāng)隱式等待設(shè)置為20s,自動化測試中想要快速判斷頁面中是否存在某個元素籍嘹,又要整個自動化測試執(zhí)行時間正常時闪盔,該如何處理呢?
這里只需要在isElementExist方法中重新設(shè)置一下隱式等待的超時時間辱士,待獲取頁面中是否存在要判斷的元素后泪掀,再恢復(fù)隱式等待的超時時間設(shè)置即可。

  public boolean isElementExist(String xpath){
        driver.manage().timeouts().implicitlyWait(2,TimeUnit.SECONDS);
        int i = driver.findElements(By.xpath(xpath)).size();
        driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
        return i==0?false:true;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颂碘,一起剝皮案震驚了整個濱河市异赫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌头岔,老刑警劉巖祝辣,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異切油,居然都是意外死亡持搜,警方通過查閱死者的電腦和手機(jī)清钥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門酿联,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灰羽,“玉大人锄蹂,你說我怎么就攤上這事牙瓢∑杈拢” “怎么了轧叽?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵弯予,是天一觀的道長戚宦。 經(jīng)常有香客問我,道長锈嫩,這世上最難降的妖魔是什么受楼? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮呼寸,結(jié)果婚禮上艳汽,老公的妹妹穿的比我還像新娘。我一直安慰自己对雪,他們只是感情好河狐,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般馋艺。 火紅的嫁衣襯著肌膚如雪栅干。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天捐祠,我揣著相機(jī)與錄音碱鳞,去河邊找鬼。 笑死雏赦,一個胖子當(dāng)著我的面吹牛劫笙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播星岗,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼填大,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俏橘?” 一聲冷哼從身側(cè)響起允华,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寥掐,沒想到半個月后靴寂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡召耘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年百炬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片污它。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡剖踊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衫贬,到底是詐尸還是另有隱情德澈,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布固惯,位于F島的核電站梆造,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏葬毫。R本人自食惡果不足惜镇辉,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贴捡。 院中可真熱鬧摊聋,春花似錦、人聲如沸栈暇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至煎源,卻和暖如春色迂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背手销。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工歇僧, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锋拖。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓诈悍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親兽埃。 傳聞我的和親對象是個殘疾皇子侥钳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

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