2017-01-20 61 views
1

使用watir,我已经编写了脚本来检查多个链接正在被导向到如下所示的正确页面。Browser.back无法正常工作

Links= ["Link", "Link1"] 

Links.each do |LinkValue|   
    @browser.link(:text => LinkValue).wait_until_present.click 
    fail unless @browser.text.include?(LinkValue) 
    @browser.back 
end 

我试图为:

maintaining Linktext in an array 
iterating with each linktext 
verify 
navigate to the previous page to start verifying with next linktext. 

但脚本不能正常工作。它没有在第一个值之后执行,也没有返回。

回答

0

下列凭证为我工作

require 'watir' 
browser = Watir::Browser.new(:firefox) # :chrome also work 
browser.goto 'https://www.google.com/' 
browser.link(text: 'Gmail').wait_until_present.click 
sleep(10) 
browser.back 
sleep(10) 
+0

为什么在'back'之前和之后睡觉? – Gopal

+0

我用sleep来检查'watir'是否正确浏览页面。你不需要它。 –

0

要调用Kernel::Fail,如果条件不满足,这将引发异常。

在这种情况下,您期待目标网页将包含与原始网页上点击的链接文字相同的链接文字。如果不是这样,那么该脚本将引发异常并终止。

这里是一个人为的“工作”的例子(其中仅“作品”,因为在这两个始发和目标网页存在链接文本):

require 'watir' 

b = Watir::Browser.new :chrome 
b.goto "http://www.iana.org/domains/reserved" 

links = ["Overview", "Root Zone Management"] 

links.each do |link| 
    b.link(:text => link).click 
    fail unless b.text.include? link 
    b.back 
end 

b.close 

一些观察:

  • 我不会在这里使用fail。您应该调查一个测试框架,如Minitestrspec,它们具有验证应用程序行为的断言方法。
  • 在红宝石中,变量(和方法和符号)应该在snake_case