首頁  >  文章  >  Java  >  了解 Selenium 4 中的等待

了解 Selenium 4 中的等待

PHPz
PHPz原創
2024-08-19 06:06:32868瀏覽

Understanding Waits in Selenium 4

在這篇文章中,我們將探討 Selenium 4 中不同類型的等待,包括新的改進和使用的最佳實踐。

Selenium 4 中的等待類型
Selenium 4 提供了三種主要的等待類型:

  1. 隱式等待
  2. 明確等待
  3. 流暢等待

讓我們深入了解每一個!

  1. 隱式等待 隱式等待是最簡單的等待類型。它們告訴 WebDriver 在嘗試尋找某個元素(如果該元素無法立即可用)時要等待一定時間。設定時間後,它將全域應用於測試中的所有元素。 程式碼範例:
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

在此範例中,Selenium 在拋出 NoSuchElementException 之前將等待長達 10 秒的元素出現。等待適用於整個會話期間的每個元素查找。

優點:

易於實作。
適合簡單的項目。
缺點:

即使不需要,也會減慢測試執行速度,因為它在全域範圍內應用等待。
與其他等待類型一起使用時可能會導致不可預測的測試行為。

  1. 顯式等待 顯式等待允許您為某些元素設定條件。您可以告訴 WebDriver 等到滿足特定條件後再繼續。這種等待更加細化,讓您可以更好地控制等待時間。

程式碼範例:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("example")));

在此範例中,WebDriver 將等待最多 15 秒,直到元素變得可見。如果該元素出現在 15 秒之前,則等待提前結束。

常見明確等待條件:

visibilityOfElementLocated()
elementToBeClickable()
enceOfElementLocated()
AlertIsPresent()
優點:

高度可定制,比隱式等待更有效率。
僅在需要特定條件時等待。
缺點:

需要更多程式碼,這會增加複雜性。
在大型專案中,管理多個顯式等待可能會變得很棘手。

  1. 流暢的等待 流暢等待是顯式等待的高級版本。它們可讓您定義最大等待時間、輪詢間隔和處理異常。在處理需要頻繁檢查的動態內容時,流暢的等待非常有用。
Wait<WebDriver> fluentWait = new FluentWait<>(driver)
    .withTimeout(Duration.ofSeconds(20))
    .pollingEvery(Duration.ofMillis(500))
    .ignoring(NoSuchElementException.class);

WebElement element = fluentWait.until(driver -> driver.findElement(By.id("example")));

這裡,WebDriver 將每 500 毫秒檢查一次元素,並在超時前等待最多 20 秒。在此期間它也會忽略 NoSuchElementException。

優點:

為如何處理等待提供更大的靈活性和控制。
允許自訂輪詢間隔和異常處理。
缺點:

設定和理解可能會更複雜。
過度客製化可能會導致程式碼混亂且難以維護。
Selenium 4 Waits 的改良
Selenium 4 引入了一些改進,特別是在如何管理等待方面:

更好的語法:Selenium 4 使用 Duration 取代先前的 TimeUnit,使其更加直觀和可讀。
相對定位器:您現在可以等待與其他元素相關的元素(例如,左側、附近等)。
增強的 WebDriverWait:Selenium 4 中的 WebDriverWait 類別更加精簡,更容易使用現代語法。

在 Selenium 4 中使用等待的最佳實踐
使用顯式等待而不是隱式等待:為了更好的控制和效能,更喜歡顯式等待,尤其是在複雜的場景中。
避免混合隱式和顯式等待:使用兩者可能會導致不可預測的行為並增加等待時間。

設定合理的超時值:避免設定不必要的長時間等待。分析應用程式的行為以確定適當的等待時間。

對動態元素使用流暢等待:如果元素高度動態,請考慮使用具有輪詢間隔的流暢等待來減少不必要的等待。

結論
在 Selenium 4 中有效處理等待對於編寫穩定可靠的自動化測試至關重要。了解何時以及如何使用隱式、顯式和流暢的等待可以大大提高測試套件的穩健性。隨著 Selenium 4 的改進,您擁有更強大的工具來管理同步問題。

以上是了解 Selenium 4 中的等待的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:示範疼痛下一篇:示範疼痛