2013-03-03 25 views
6

Çeşitli web sitelerini nasıl ele almak istediğimi yöneten, her ikisinde de benzer yöntemlerle (yani, oturum açma, yenileme) yönetilen birkaç dersim var. Her sınıf kendi WATIR tarayıcı örneğini açar. 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 
} 

Bu iyi çalışır, ancak mevcut bir giriş tamamlanana kadar bir sonraki ajan üzerine doesnt hareket aşağıdaki şekilde hiçbir iş parçacığı ile ana kod bir örnektir. Ben istiyorum Bunu işlemek için çoklu iş parçacığı dahil etmek, ancak işe almak için görünmüyor.

require 'watir' 
require_relative 'site1' 

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


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

threads.each { |t| t.join } 

bu bana hata veriyor: bilinmeyen özelliği veya yöntemi: navigate. HRESULT hata kodu: 0x8001010e. Uygulama, farklı bir iş parçacığı için sıralı bir arabirim olarak adlandırıldı.

Bunu nasıl düzelteceğinizi veya benzer bir işlevselliği nasıl uygulayacağını bilen var mı?

+1

Bu, watir klasiğinde veya kullandığı kütüphanelerden birinde bir hata gibi görünüyor. Firefox ile watir-wedriver kullanırken sorun oluşmaz. –

+0

teşekkürler justin, sana doğru gibi görünüyor. watir-webdriver ile iyi çalışır, bu yüzden watir-classic ile sadece bir hata olduğunu tahmin ediyorum. – cubesnyc

cevap

0

Bu konuda gerçekten emin değilim, ancak iş parçacığı kullanarak bir salıncak.

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 
İlgili konular