【发布时间】:2016-08-05 14:00:35
【问题描述】:
我不熟悉使用 selenium Webdriver 和写作 c#。我在我的脚本中使用了很多 thread.sleep() 命令来确保 Selenium 不会尝试点击太快。经过大量研究,我发现这是不受欢迎的,并且有“更好”的方法可以做到这一点,所以我开始使用:-
wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("FieldId")));
Wait 在另一个类中定义为:-
wait = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 10));
我只能让它运行脚本的 2/10 次而没有得到:
没有这样的元素异常:找不到元素......
现在我已经停止使用thread.sleep,我有很多关于这个问题的例子。经过大量研究后,我总是发现这是建议的方式,但它似乎完全不可靠。我错过了什么吗?该元素在 2 秒后始终存在,并且在 10 秒过去之前发生错误。我已经阅读了至少 10 篇听起来相似的其他帖子,但没有一个有有效的解决方案……除了Thread.Sleep(5000)!
【问题讨论】:
-
如果你使用
WebDriverWait,你怎么能得到No such element exception而它抛出TimeoutException?? -
@SaurabhGaur
Until()如果不在忽略列表中,则抛出异常 -
你也在使用隐式等待吗?如果同时使用隐式等待和显式等待,可能会得到意想不到的结果。
-
@JeffC - 首先,感谢您提供帮助。我没有同时使用其他类型的等待。我已经尝试过使用它,但这是目前我正在使用的唯一“等待”过程。
标签: c# selenium-webdriver wait