0

问题

自从更改了一些 CSS 以从 Googlefonts 加载字体后,我发现有时在本地运行时,我们的 Watir 测试会失败,因为它们正在等待 Googlefonts 加载并且我们的连接已挂起或只是在花时间。

因为这是一个 CSS 加载问题,所以页面的所有元素都可以访问,所以我不能使用类似wait_until_present的东西,因为这些东西存在,但是 Watir 出于某种原因不想玩它。

我不想在本地测试时更改我的资产管道以不加载这些东西,因为这违背了健全性测试的目的。

我试过的

我试过传入类似的东西;

browser.wait.until do
  window_loaded = browser.execute_script '$(window).load(function() { return true; });'
  window_loaded == true
end

但我无法让它工作,而且我不相信这将是解决这个问题的正确方法。

4

2 回答 2

1

取自:http ://watirwebdriver.com/waiting/

require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
b.select_list(:id => 'entry_1').wait_until_present
b.text_field(:id => 'entry_0').when_present.set 'your name'
b.button(:value => 'Submit').click
b.button(:value => 'Submit').wait_while_present
Watir::Wait.until { b.text.include? 'Thank you' }

你也可以使用:

sleep 2

我个人sleep习惯等到所有内容都加载完毕。与 AJAX 配合得非常好。

于 2013-09-11T15:33:45.033 回答
0

看到这个答案

begin
  Timeout::timeout(10) do
    # perform actions that may hang here
  end
rescue Timeout::Error => msg
  put "Recovered from Timeout"
end
于 2016-07-03T15:38:07.717 回答