Ruby循环问题

时间:2011-03-08 02:22:13

标签: firefox watir

我有以下内容:

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秒内刷新来为此创建循环?

每次下一次点击按钮都会刷新网页浏览器。

4 个答案:

答案 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>