Watir' Wait'不等

时间:2017-11-20 20:42:36

标签: ruby unit-testing selenium-webdriver watir

gem" watir"," 6.9"

尝试执行此代码

2.times { next_button.when_present.click } 或者像这样 2.times { next_button.wait_until(&:present?).click }

收到此错误

 Watir::Exception::UnknownObjectException:
   unable to locate element: #<Watir::Button: located: false; {:class=>"course-player__content-next-btn", :tag_name=>"button"}>

但是我告诉Watir在点击之前等待一个元素!

发生了什么?我不是睡觉的粉丝,也不想使用它们!

谢谢!

P.S。找到并确定了next_button。 该代码适用于睡眠,并且默认情况下不会等待元素。

2 个答案:

答案 0 :(得分:1)

你可以尝试例如 - 如果元素在gui中可见并且存在于html =继续单击

 browser.element(class: button_ok).wait_until_present
 browser.element(class: button_ok).click

或 - 如果元素在html中存在且在gui中可见=继续单击

 browser.element(class: button_ok).present?
 browser.element(class: button_ok).click

或 - 如果html中存在元素=继续单击

browser.element(class: button_ok).exists?
browser.element(class: button_ok).click

或 - 等到元素不可见(消失)

browser.element(class: button_ok).wait_while_present
browser.element(class: button_ok).click

希望它会对你有所帮助。

当然button_ok是可变的 button_ok =“path”

答案 1 :(得分:0)

从6.15版开始,#wait_while_present#wait_until_present已弃用。对于版本6.2至6.14,这些方法的行为或与.wait_until(&:present?).wait_while(&:present?)略有不同。情况不再如此,这些方法也不再使用。