此問題與以下類似:
即如何等待進度條消失。
How to wait dynamically until the progress bar to load completely in Selenium Webdriver?在Selenium Webdriver中,ExpectedCondition.elementToBeClickable並未等到進度條消失
煤礦有點不同。這裏當進度條出現時,所有元素都被禁用。所以我使用明確的等待,但仍然得到例外。
場景: 在註冊頁面中,在提供所有細節後,腳本點擊「創建帳戶」按鈕。此時,會出現一個圓形進度條,如果輸入的密碼無效(僅用無效密碼進行驗證),它會持續1或2秒,錯誤消息顯示在註冊頁面的頂部。現在我需要點擊「取消」按鈕並重復該過程。
當進度條出現時,整個頁面將被禁用。只有在進度條消失後,用戶才能繼續。
我已經寫代碼,使用WebDriverWait如下相同:
WebDriverWait myWaitVar = new WebDriverWait(driver,20);
單擊「創建帳戶」按鈕後,進度條來了,我等到出現取消按鈕。
//Click on Create Account btn:
driver.findElement(By.id("createAccount")).click();
//Wait till "Cancel" button is showing up. At cases, it may take some time.
myWaitVar.until(ExpectedConditions.elementToBeClickable (By.id("cancelRegister")));
//click on Cancel btn:
driver.findElement(By.id("cancelRegister")).click();
當我執行上面的代碼時,每次都在最後一行得到NoSuchElementException
。
我試過ExpectedCondition.visibilityOfElement()
,但這裏也是NoSuchElementException
。
然後我嘗試使用睡眠方法而不是等待。
Thread.sleep(3000);
現在腳本工作正常。
我無法理解爲什麼WebDriverWait
沒有等到進度條消失?
它已成功解析了elementToBeClickable()
,但仍然拋出異常,當我們點擊它時。
我試過這個,@Saurabh。它引發以下異常: org.openqa.selenium.WebDriverException:元素在點(575,446)處不可單擊。其他元素將收到點擊:
命令持續時間或超時:83毫秒 –@AbdulRahman意味着您現在可以找到元素。由於其他元素疊加造成的點擊有問題。因此,在這種情況下,您可以使用'JavascriptExecutor'點擊元素..嘗試編輯答案..希望它有幫助... :) –
@AbdulRahman作爲例外明確說明您的進度條仍然會出現接收點擊的情況,所以最好的方法是先等待進度條的隱身,然後等待取消註冊按鈕的可見性。看到第二個更新的答案.. :) –