Selenium-WebDriver 中等待的最佳實踐
使用Selenium-WebDriver 時,通常需要實現等待以確保元素在對它們執行操作之前載入。兩種常見的方法是隱式等待和明確等待。
隱式等待:
隱式等待使用 driver.manage().timeouts().implicitlyWait(2, TimeUnit 設定.秒);。它們全域影響所有驅動程式操作,為所有元素查找嘗試提供逾時期限。這種方法對於 UI 載入時間不可預測的場景很方便,但可能會導致整體等待時間更長。
明確等待:
明確等待,例如如WebDriverWait.until(condition-that-finds-the-element);,在特定元素或條件上執行。它們提供了更有針對性的方法,允許精確的等待時間以及指定元素存在或可見性等條件的能力。
比較:
Feature | Implicit Waits | Explicit Waits |
---|---|---|
Global Scope | Yes | No |
Customization | Limited | Highly customizable |
Precision | Less precise | Precise |
建議方法:
大多數情況下,建議使用明確等待(特別是fluidWait)而不是隱式等待。 FluentWait 是一種明確等待,提供進階自訂選項,包括靈活的逾時、輪詢間隔和異常處理。
FluentWait 範例:
<code class="java">public WebElement fluentWait(final By locator) { Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring(NoSuchElementException.class); WebElement foo = wait.until(new Function<WebDriver, WebElement>() { public WebElement apply(WebDriver driver) { return driver.findElement(locator); } }); return foo; }</code>
By利用FluentWait,您可以為元素查找設定特定的超時,並避免不必要的全域等待時間,這會減慢您的速度測試。
以上是Selenium-WebDriver 中的隱式等待與明確等待:您應該選擇哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!