我写了几个类来控制如何处理几个网站,两个类都有类似的方法(例如登录、刷新)。每个类都打开自己的watir浏览器实例。
class Site1
def initialize
@ie = Watir::Browser.new
end
def login
@ie.goto "www.blah.com"
end
end
没有线程的main中的代码示例如下
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。应用程序调用了为其他线程封送的接口。有人知道如何解决这个问题,或者如何实现类似的功能吗?
最佳答案
不太确定,但这里有一个使用线程的swing。
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