【发布时间】:2018-01-04 23:36:06
【问题描述】:
我正在编写的一些测试调用检查是否在使用该选项后从选择列表中删除了该选项。我不断收到此错误: 60 秒后超时,等待 {:xpath=>"//select[@id = 'newIdentifierType']//option", :index=>31} 被定位( Watir::Exception::UnknownObjectException)
它导致我的测试在 10 次运行中可能有 2-3 次失败,而且看起来有点随机。我认为 Watir 正在寻找具有此 ID 的“旧”选择列表,因为它缓存了元素并且可能还包括它具有 32 个项目,但由于具有此 ID 的选择列表 and 32 它超时项目不再存在。新的选择列表具有相同的 ID,但只有 31 项。
有没有办法总是在这个元素上获得新的参考,即使它在技术上并没有过时?我是否因为其他问题而遇到此问题?
我当前用于获取选择列表中的选项的代码:@browser.elements(:xpath => "//select[@id = 'newIdentifierType']//option")
我正在使用带有 Selenium 和 Watir Webdriver 级别的 Ruby/Cucumber。我首先尝试将元素定义为页面对象中的 select_list,但使用 @browser.element 将其移至步骤定义以查看是否会停止超时。我认为它可能会忽略 Watir 的缓存元素并使用 ID 获取最新的元素,但事实并非如此。
【问题讨论】:
-
在选择列表中选择一个选项后,UI(和 DOM)实际上发生了变化?您能否提供 HTML 来重现此行为?
标签: ruby selenium xpath watir page-object-gem