问题
自从更改一些 CSS 以从 Googlefonts 加载字体后,我发现在本地运行时,我们的 Watir 测试偶尔会失败,因为它们正在等待 Googlefonts 加载,而我们的连接已挂起或正在等待。
因为这是一个 CSS 加载问题,页面的所有元素都是可访问的,所以我不能使用像 wait_until_present
这样的东西,因为这些东西存在,但是 Watir 出于某种原因不存在想和它一起玩。
我不想更改我的 Assets 管道以在本地测试时不加载这些东西,因为这违背了完整性测试的目的。
我尝试过的
我试过传递类似的东西;
browser.wait.until do
window_loaded = browser.execute_script '$(window).load(function() { return true; });'
window_loaded == true
end
但我无法让它工作,而且我不相信这是解决这个问题的正确方法。
最佳答案
取自: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 一起工作得很好。
关于css - 让 Watir 等待所有第 3 方脚本加载完毕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570949/