【问题标题】:Inconsistently getting error (Watir::Wait::TimeoutError)出现不一致的错误 (Watir::Wait::TimeoutError)
【发布时间】:2014-06-13 22:38:11
【问题描述】:

我是黄瓜新手,在运行脚本时有时会出错

(Watir::Wait::TimeoutError)

我没有找到任何特定的模式。 任何帮助将不胜感激。

非常感谢

【问题讨论】:

  • 显然您正在等待有时在 Watir 的默认超时之前发生的事情,有时它会超过该时间,从而导致您描述的错误。看看watirwebdriver.com/waitingstackoverflow.com/questions/8401885/…
  • 谢谢,@rkon,但还有一点疑问。例如 '@browser.text_field(:id, "unified-itin-emailId").when_present().set(email)' in this code in when_present (120) 无论我给它什么时间都不会反映并且错误继续。说在这秒超时之后。此超时和浏览器超时之间是否有区别,例如 @browser.wait_until(120)

标签: ruby automation cucumber


【解决方案1】:

首先,确保您需要合适的库用于 watir-webdriver/wait。

require "watir-webdriver/wait"

Watir 有一些声明对象等待时间的方法,例如(通过Watir Webdriver/Waiting):

显式等待

您可以使用四种内置方法让您的等待体验更愉快(并从您的代码中删除那些邪恶的睡眠语句)

Watir::Wait.until { ... }   #=> you can wait for a block to be true
object.when_present.set     #=> you can do something when it’s present
object.wait_until_present   #=> you just wait until something is present & visible
object.wait_while_present   #=> you just wait until something disappears


Watir 还有一种方法可以设置驱动程序执行之间的隐式等待时间。

隐式等待

作为替代方案,您可以使用 WebDriver 的隐式等待来指定脚本在超时之前尝试查找元素的最长时间(以秒为单位)。这是通过设置底层驱动的属性来完成的:

require 'watir-webdriver'
b = Watir::Browser.new
b.driver.manage.timeouts.implicit_wait = 3 #=> always wait 3 seconds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多