我有以下内容:
browser = Watir::Browser.start "http://www.cramster.com/solution/solution/913513"
browser.link(:xpath,".//*[@id='buttonPrint']").click
sleep 5
browser.link(:xpath,".//*[@id='cmdNext']").click
browser.link(:xpath,".//*[@id='buttonPrint']").click
是否可以根据网页是否在x秒内刷新来为此创建循环?
每次下一次点击按钮都会刷新网页浏览器。
答案 0 :(得分:1)
除非Dave回答你的问题(并且非常整洁),否则你的意图并不完全清楚。仅当页面已设法刷新x秒数时,是否要单击按钮组合?或者单击按钮直到它在一定的秒数内刷新?所以你可以使用......
直到循环
IE.down_load_time:给出执行最后一个命令后加载新页面所花费的时间(以秒为单位)
或许,就像初稿一样:
browser = Watir::Browser.start "http://www.cramster.com/solution/solution/913513"
browser.link(:xpath,".//*[@id='buttonPrint']").click
done = false
until done
browser.link(:xpath,".//*[@id='cmdNext']").click
done = true if browser.down_load_time <= 5
browser.link(:xpath,".//*[@id='buttonPrint']").click
sleep 5
end
更多想到你想要实现的目标会有所帮助,希望这对你有用。 PS。你需要使用xpath吗?
答案 1 :(得分:0)
如果您正在进行测试,请不要这样做。通过测试本身创建数据集,这样您就可以始终知道点击“下一步”的次数,而不是创建一些每次都可能表现不同的循环。即使您连续运行10000次并在一年后运行,测试也应该是可重复的。只是我的意见。
答案 2 :(得分:0)
现在我有了这个:
# To change this template, choose Tools | Templates
# and open the template in the editor.
require 'rubygems'
require 'watir'
#start the browser up
Watir::Browser.default = "firefox"
browser = Watir::Browser.start "cramster.com/solution/solution/913524";
done = true
done = true if browser.link(:xpath,".//*[@id='cmdNext']").exists?
if done = true
browser.link(:xpath,".//*[@id='cmdNext']").click
browser.link(:xpath,".//*[@id='buttonPrint']").click
sleep 5
else
browser goto "cramster.com/";
end
我认为它不会执行else
操作。
答案 3 :(得分:0)
假设你在后面的某个地方使用'done',我认为你想要的更多就是这些。 (如果没有使用完成,请删除下面设置为true或false的行)
if browser.link(:id, 'Next').exists?
done = true
browser.link(:id, 'Next').click
browser.link(:id, 'Print').click
sleep 5
else
done = false
browser.goto "nextaddress.com/";
end
然而,代码中没有等待链接存在的东西,你需要类似Dave给出的代码,循环等待它出现(可能限制它循环的次数< / p>