У меня есть несколько классов, которые определяют, как я хочу обрабатывать несколько веб-сайтов, с аналогичными методами в обоих (то есть, логин, обновление). Каждый класс открывает собственный экземпляр браузера WATIR.Ruby Threads with 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. Приложение называется интерфейсом, который был настроен для другого потока.
Кто-нибудь знает, как исправить это, или как реализовать аналогичную функциональность?
Кажется, что это ошибка в watir-classic или одна из библиотек, которые она использует. Проблема не возникает при использовании watir-wedriver с firefox. –
спасибо, justin, похоже, что ты прав. хорошо работает с watir-webdriver, поэтому я думаю, что это просто ошибка с watir-classic. – cubesnyc