Selenium c#wait.till(expectedconditions)..函数无法在屏幕上找到对象/元素
本文关键字:屏幕 对象 元素 till c#wait expectedconditions 函数 Selenium | 更新日期: 2023-09-27 18:01:04
我是使用硒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)
!
创建后,尝试将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上查看,我发现这对理解如何使用它非常有帮助。