簡體   English   中英

Selenium C#wait.until(expectedconditions)…函數無法在屏幕上找到對象/元素

[英]Selenium c# wait.until(expectedconditions)… function fails to find objects/elements on screen

我不Webdriver使用Webdriver和編寫c# 我在腳本中使用了許多thread.sleep()命令,以確保Selenium不會嘗試並單擊得太快。 經過大量研究,我發現這種方法不被接受,並且有“更好”的方法,所以我開始使用:

wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("FieldId")));

等待在另一個類中定義為:-

wait = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 10));

我只能使它能夠運行腳本的2/10次,而不會得到:

沒有這樣的元素異常:無法找到元素……

我有很多關於此問題的示例,現在我已經停止使用thread.sleep 經過大量研究,我總是發現這是建議的方法,但似乎完全不可靠。 我錯過了什么嗎? 該元素始終在2秒后出現,並且錯誤在10秒過去之前發生。 我已經閱讀了至少10篇聽起來類似的文章,但沒有一個有Thread.Sleep(5000)的解決方案... Thread.Sleep(5000)除外!

創建后,請嘗試將NoSuchElementException類型添加到服務員的IgnoreExceptionTypes中。

wait = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 10));
wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("FieldId")));

通常,如果服務員在您指定的超時到期之前返回,那是因為發生了異常,當前未將其忽略。

WebDriverWait類是從DefaultWait類派生的。 兩者都可以在github上查看,我發現它對理解如何使用它很有幫助。

暫無
暫無

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

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