如何有效處理Selenium-WebDriver for Java 中的等待間隔
在Java Selenium-WebDriver 中,處理等待間隔對於確保穩定至關重要測試執行並避免逾時。主要有兩種方法:隱式等待和明確等待。
隱式等待
隱式等待設定預設逾時適用於所有 WebDriver 操作,例如元素發現和頁面載入。以下程式碼設定了2 秒的隱式等待:
<code class="java">driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);</code>
雖然隱式等待簡化了測試程式碼,但如果指定的超時時間短於實際載入時間,則可能會導致不必要的等待和不穩定的測試。
明確等待
明確等待指定特定操作的自訂逾時。這使得等待更加精確和有效率。明確等待的語法為:
<code class="java">WebDriverWait.until(condition-that-finds-the-element);</code>
推薦方法
在問題中描述的場景中,應用程式需要幾秒鐘來載入UI ,建議顯式等待,特別是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>
用法:
<code class="java">WebElement textbox = fluentWait(By.id("textbox"));</code>
結論
雖然
結論雖然結論雖然結論雖然結論雖然結論雖然結論都有其優點,但顯式等待在應用程式載入時間不可預測或冗長的情況下提供了更好的控制、精度和效率。 FluentWait 在這種情況下特別有用,它提供了可自訂且強大的等待策略。以上是隱式等待與明確等待:哪種最適合處理 Selenium-WebDriver 中的載入時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!