【发布时间】:2017-07-17 20:19:21
【问题描述】:
我使用了implicitlyWait 方法来全局设置等待时间以在selenium 中查找DOM 元素。我给了100秒的等待时间。但在某些情况下,驱动程序没有找到该元素。即使 DOM 元素在 10 秒内成功加载,它也会完全等待 100 秒,100 秒后它显示为“找不到元素”错误。此错误仅在极少数情况下发生。如果我再次运行该项目,它工作正常。有什么办法可以在全球范围内处理这个问题?
隐式等待的代码
driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS).pageLoadTimeOut(100, TimeUnit.SECONDS);
查找元素的代码
driver.findElement(By.id("btnSearch")).click();
特定按钮的 HTML 代码
<input id="btnSearch" class="searchStyle"/>
注意:我正在使用 InternetExplorer 驱动程序
问候, 苏尼尔·普拉巴卡尔 C
【问题讨论】:
-
我怀疑人们有足够的数据来帮助你。如果只是为了确保每次都确实应该找到它,那么您找不到的按钮的 HTML(和/或 JS)代码会很好。
-
离题...但是为什么要使用隐式等待?您在测试中增加了不必要的执行时间。
-
我正在使用隐式等待,因为有时我的网页需要一些加载时间。在那种情况下,驱动程序无法找到元素。为了避免这些类型的问题,我正在使用隐式等待。
-
如果它是间歇性的,我会在 try/catch 块中包围调用,记录错误消息并在 catch 内,我会尝试使用
JavascriptExecutor运行它。有时Selenium不会评估元素是否“准备好”执行某些操作,并且可以通过 javascript 实现。只是猜测。
标签: java selenium selenium-webdriver automation