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。谢谢你的帮助。

4

1 回答 1

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的 5 次迭代while。这很笨拙,可能会破坏您的预期结果。所以只是做:

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

至少会使引擎盖下发生的任何事情变得更加清晰。

于 2015-07-13T06:01:22.983 回答