[英]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.