2014-03-26 47 views
15

請分享有關selenium webdriver的知識。請顯示實時示例。Implicit wait Vs.有什麼區別在selenium webdriver中顯式等待?

+0

這是沒有什麼添加到文檔http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits – olyv

+0

請參閱http://stackoverflow.com/questions/11736027/webdriver-等待元素或http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits – Sighil

+1

該文檔清楚地解釋了*兩種等待做什麼 - 但它不能解釋什麼時候使用其中一個或另一個,或者爲什麼需要隱式等待,或爲什麼隱式等待對於webdriver的生命是固定的。還有一點點信息[這裏](http://www.bizalgo.com/2012/01/14/timing-races-selenium-2-implicit-waits-explicit-waits/) – DNA

回答

21

檢查下面的鏈接:

  • Implicit Wait - 它指示Web驅動程序等待一段時間以投票的DOM。一旦你聲明隱含的等待,它將可用於Web驅動程序實例的整個生命週期。默認情況下,該值將爲0.如果設置較長的默認值,則該行爲將根據瀏覽器/驅動程序實現定期輪詢DOM。

  • Explicit Wait + ExpectedConditions - 這是自定義的。如果我們希望執行等待一段時間,直到達到某個條件,它將被使用。

+2

什麼這是否意味着「輪詢DOM」?我對「民意調查」的行爲感到困惑。 Thx – 8090PZ

+2

通過「輪詢DOM」他只是意味着「再次定期讀取dom以檢查重新加載」。輪詢行爲取決於具體的驅動程序/瀏覽器實現,但通常每隔0.5秒進行一次隱式等待(如果將隱式等待設置爲〜1秒或更長) – djangofan

13

隱等待 -

隱等待,基本上你告訴webdriver的,你想看看指定的Web元素不存在該webdriver的尋找延遲的方式。因此,在這種情況下,您告訴WebDriver,如果指定元素在UI(DOM)上不可用,應等待10秒鐘。

明確等待 -

明確的等待是被限制在特定的網絡元素智能等待。使用明確的等待,你基本上是告訴WebDriver最多等待X單位的時間,然後放棄。

+0

@JimEvans我完全同意您的觀點。 –

+0

@sircapsalot,請檢查:http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp –

7

給上述解決方案增加另一個觀點。

隱式等待:創建時,直到WebDriver對象死亡時才處於活動狀態。對於所有操作都很普遍。

然而,
明確等待,可申報取決於webElement行爲的特定操作。它具有定製輪詢時間和滿足條件的好處。
例如,我們聲明瞭10秒的隱式等待,但一個元素需要更多的時間,比如20秒,有時可能會在5秒出現,所以在這種情況下,聲明瞭顯式等待。

10

差異:

1)隱等待被設置爲對象的webdriver的整個持續時間。假設你想等待一段時間,比如說每個元素之前5秒或網頁上的很多元素加載。 現在,你不想一次又一次地寫同樣的代碼。因此,隱含的等待。 但是,如果您只想等待一個元素,請使用顯式。

2)您不僅需要顯示網頁元素,還要點擊或滿足網頁元素的某些其他屬性。這種靈活性只能通過明確的等待來提供。如果在網頁上加載動態數據,特別有用。您可以等待使用明確的等待開發該元素(不只是在DOM上顯示)。

0

我的思想,

隱等待:如果設置等待狀態,它會等待指定的時間量爲每findElement/findElements調用。如果行動尚未完成,它會引發異常。

顯式等待:如果等待已設置,它將等待並在提供的條件變爲true時繼續執行下一步,否則將在等待指定時間後引發異常。顯式等待僅適用於指定的地方。

1

隱式等待用於在整個測試腳本中的每個連續測試步驟/命令之間提供默認等待時間。因此,只有在執行先前的測試步驟/命令後經過了指定的時間量後,纔會執行後續測試步驟。

顯式等待用於暫停執行,直到達到特定條件或達到最大時間爲止。與隱式等待不同,顯式等待僅適用於特定實例。

相關問題