我编写了几个类来控制我想如何处理多个网站,两者都使用类似的方法(即登录、刷新)。每个类都打开自己的 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。应用程序调用了为不同线程编组的接口。
有谁知道如何解决这个问题,或者如何实现类似的功能?