2015-07-13 65 views
0

我有它在脚本登录并进入浏览器url的地方,但是当它退出当前网页时,它只是坐在那里,不会重新启动循环。我如何获得循环来实现完成并重启?如何让我的脚本循环?

x = 0 

while x <= 5 

File.open("yahoo_accounts.txt") do |email| 
    email.each do |item| 
    email, password = item.chomp.split(',') 
    emails << email 
    passwords << password 
    emails.zip(passwords) { |name, pass| 
     browser = Watir::Browser.new :ff 
     browser.goto "url" 

    #logs in and does what its suppose to do with the name and pass 

     } 
    end 
    x += 1 
    next 
end 
end 

当脚本完成它只是坐在在网页...我试图让它去再次开始...... 你可能会认为它会采取每一个名字,通过去回到开始的url。 感谢您的帮助。

回答

0

看起来你可能没有正确地打电话给browser.close。在我的快速模拟测试中,如果我不这样做,我肯定会感到奇怪的行为。你也在使用非惯用的Ruby循环。试试这个:

5.times do 
    File.open("yahoo_accounts.txt") do |email| 
    email.each do |item| 
     email, password = item.chomp.split(',') 
     emails << email 
     passwords << password 
     emails.zip(passwords) do |name, pass| 
     browser = Watir::Browser.new :ff 
     browser.goto "url" 

     #logs in and does what its suppose to do with the name and pass 

     browser.close 
     end 
    end 
    end 
end 

编辑:

另外,如果你想完全相同Watir::Browser实例做了所有的工作,初始化和主循环的接近之外。现在,您将生成一个新的Browser实例,每次迭代的次数为emails.zip,次数为email.each的每次迭代次数,乘以while循环的5次迭代次数。这只是不明智的做法,并可能导致您的预期结果。所以只是这样做:

browser = Watir::Browser.new :ff 
5.times do 
    ... loop code ... 
end 
browser.close 

至少会使发生在罩下更清楚的事情。

+0

当我在我的脚本中使用browser.close时,它会阻止它完全运行 – marriedjane875

+0

所以最后一部分而不是browser.close我只是退出该网站。 – marriedjane875

+0

看到我最新的编辑,你肯定会产生大量的实例,这些实例在我的机器上打开了大量的浏览器窗口,并且快速地失控。看看是否有帮助。 – wmjbyatt