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