6

我编写了几个类来控制我想如何处理多个网站,两者都使用类似的方法(即登录、刷新)。每个类都打开自己的 WATIR 浏览器实例。

class Site1
    def initialize
         @ie = Watir::Browser.new
    end
    def login
         @ie.goto "www.blah.com"
    end
end

没有线程的主代码示例如下

require 'watir'
require_relative 'site1'

agents = []
agents << Site1.new

agents.each{ |agent|
     agent.login
}

这工作正常,但在当前代理完成登录之前不会移动到下一个代理。我想结合多线程来处理这个,但似乎无法让它工作。

require 'watir'
require_relative 'site1'

agents = []; threads = []
agents << Site1.new


agents.each{ |agent|
     threads << Thread.new(agent){ agent.login }
}

threads.each { |t| t.join }

这给了我错误:未知属性或方法:navigate。HRESULT 错误代码:0x8001010e。应用程序调用了为不同线程编组的接口。

有谁知道如何解决这个问题,或者如何实现类似的功能?

4

1 回答 1

0

对此不太确定,但这是使用线程的摇摆。

require 'thread'
  threads = []                # Setting an array to store threaded commands
  c_thread = Thread.new do    # Start a new thread
    login                     # Call our command in the thread
  end
  threads << c_thread
于 2013-09-18T00:17:51.890 回答