此脚本在irb中运行,但不是作为独立脚本运行:
require 'watir'
b = Watir::Browser.start "http://www.google.com/"
b.text_field(:name => "q").value = "foo"
b.button(:name => "btnG").click
b.link(:url => /foofighters/).click
最后一行是在irb之外运行时失败的地方(找不到'element element'错误消息)。但从irb运行时效果很好。这可能是一个时间问题吗?
提前致谢!
答案 0 :(得分:2)
你需要使用.when_present来确保它等到它存在
require 'rubygems'
require 'watir'
b = Watir::Browser.start "http://www.google.com/"
b.text_field(:name => "q").value = "foo fighters"
b.button(:name => "btnG").click
b.link(:url => /foofighters/).when_present.click
答案 1 :(得分:1)
当你使用IRB一个接一个地执行这些步骤时,任何时候都会有效,但是当作为脚本运行时会失败,首先要考虑的是“计时问题”,这样你的直觉就是正确的。 (如果正在执行的代码在两种情况下都是相同的,则时间是最重要的差异)
Alister提出了一个解决时间问题的潜在解决方案。其他示例可以在'how to wait with watir'主题
下的watir-wiki中找到