簡體   English   中英

顯式等待在 Selenium webdriver 中不起作用

[英]Explicit wait is not working in Selenium webdriver

我試圖在我的頁面中找到一個元素。 只有在應用程序中出現任何錯誤時,該元素才會出現。 我處理得很好,唯一的問題是它等待 30 秒(隱式等待)才能進入下一步。 我不想等待 30 秒,而是希望我的腳本在進入下一步之前等待 3 秒,所以我決定使用顯式等待。 這是我的代碼

WebDriverWait wait = new WebDriverWait(driver, 3);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("errorelement")));

問題是 Selenium webdriver 在給出錯誤並進入下一步之前仍在等待該元素長達 30 秒。 我也嘗試了visibilityOfElementLocated 選項,但它仍然無法正常工作。

我在這里錯過了什么嗎?

硒版本:- 2.46.0

瀏覽器:- Mozilla、Chrome

我建議將隱式等待設置為 0,並始終使用顯式等待:

driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);

這是關於這個主題的一個很好的答案

如果您在同一個解決方案中使用隱式等待和顯式等待,您將遇到來自 seleniumhq 文檔的問題

警告:不要混合隱式和顯式等待。 這樣做可能會導致不可預測的等待時間。 例如,設置 10 秒的隱式等待和 15 秒的顯式等待,可能會導致 20 秒后發生超時。


添加官方文檔鏈接及其截圖 -

請參閱有關混合顯式和隱式等待的 Selenium 官方文檔。

( https://www.selenium.dev/documentation/en/webdriver/waits/ )

在此處輸入圖片說明

你能和我們分享完整的代碼嗎? 您似乎忘記從某處刪除 30 秒等待。 – 皮蒂亞

這非常直截了當,我遇到了同樣的問題,但這只是因為我在啟動瀏覽器時聲明了隱式等待 30 秒,沒有想到回頭看它,因為它看起來“微不足道”。 非常感謝您指出這一點 peetya。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM