いくつかの Web サイトを処理する方法を管理するいくつかのクラスを作成しましたが、両方で同様の方法 (つまり、ログイン、更新) を使用しています。各クラスは、独自の 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。アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。
これを修正する方法、または同様の機能を実装する方法を知っている人はいますか?