gpt4 book ai didi

ajax - 是否可以全局增加 Watir-Webdriver when_present 等待时间?

转载 作者:行者123 更新时间:2023-12-04 14:13:45 26 4
gpt4 key购买 nike

我正在编写一个自动化测试程序,它将测试一些有时加载某些 AJAX 调用很慢的 Web 程序。例如,用户将单击“查询”,这将导致 15 到 90 秒的 HTML“加载”覆盖。搜索完成后,它将使用结果更新同一页面上的表格。

所以显然我可以像这样单独增加等待时间:

browser.td(:id => 'someId').when_present.some_action #=> will wait 30 seconds
browser.td(:id => 'someId').when_present(90).some_action #=> will wait *90* seconds

但是有没有办法修改(在我的情况下增加)时间,所以 Watir-Webdriver 总是在 .when_present 上等待 90 秒像这样:
browser.some_default = 90
browser.td(:id => 'someId').when_present.some_action #=> will wait *90* seconds

警告几句: Client timeout will not affect when_present . Nor will implicit wait .

最佳答案

更新:此猴子补丁已合并到 watir-webdriver 中,因此在 watir-webdriver v0.6.5 中不再需要。您将能够使用以下方法设置超时:

Watir.default_timeout = 90

wait methods定义类似于:
def when_present(timeout = 30)
message = "waiting for #{selector_string} to become present"

if block_given?
Watir::Wait.until(timeout, message) { present? }
yield self
else
WhenPresentDecorator.new(self, timeout, message)
end
end

如您所见,默认的 30 秒超时是硬编码的。因此,没有简单的方法可以在任何地方更改它。

但是,您可以修补等待方法以使用默认时间并将其设置为您想要的。以下猴子补丁将默认超时设置为 90 秒。
require 'watir-webdriver'
module Watir

# Can be changed within a script with Watir.default_wait_time = 30
@default_wait_time = 90
class << self
attr_accessor :default_wait_time
end

module Wait

class << self
alias old_until until
def until(timeout = Watir.default_wait_time, message = nil, &block)
old_until(timeout, message, &block)
end

alias old_while while
def while(timeout = Watir.default_wait_time, message = nil, &block)
old_while(timeout, message, &block)
end

end # self
end # Wait

module EventuallyPresent

alias old_when_present when_present
def when_present(timeout = Watir.default_wait_time, &block)
old_when_present(timeout, &block)
end

alias old_wait_until_present wait_until_present
def wait_until_present(timeout = Watir.default_wait_time)
old_wait_until_present(timeout)
end

alias old_wait_while_present wait_while_present
def wait_while_present(timeout = Watir.default_wait_time)
old_wait_while_present(timeout)
end

end # EventuallyPresent
end # Watir

在加载 watir webdriver 代码后包含补丁。

关于ajax - 是否可以全局增加 Watir-Webdriver when_present 等待时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19994867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com