2011-09-27 209 views
8

背景:並行運行Selenium測試與水豚

我有一組的運行對我的Rails 3應用水豚集成測試。對於測試套件的其他部分,我使用的是Rspec

我在我的Mac OSX開發機器上安裝了一個selenium 2.6.0獨立服務器集線器。

java -jar selenium-server-standalone-2.6.0.jar -role hub 

我運行多個虛擬機,每個掛在輪轂與硒節點:

java -jar selenium-server-standalone-2.6.0.jar -role webdriver -hub http://0.0.1.12:4444/grid/register port 5555 -browser browserName="internet explorer",version=8,platform=WINDOWS 

這工作得很好,在這個截圖控制檯顯示我有一個IE7和IE8的瀏覽器連接到集線器:

The hub console showing connected nodes

我設置水豚兌硒樞紐運行(即代表測試到節點)。

Capybara.app_host = "myapp.dev" 
Capybara.default_driver = :selenium 
Capybara.register_driver :selenium do |app| 
    Capybara::Selenium::Driver.new(app, 
    :browser => :remote, 
    :url => "http://localhost:4444/wd/hub", 
    :desired_capabilities => :internet_explorer) 
end 

它可以工作,但它只會在單個internet_explorer節點上運行測試。它似乎是「第一線」的;如果我關閉它,測試將成功運行在另一個節點上。

我一直在嘗試parallel_tests項目,按照建議配置capybara,但那仍然只會啓動一個集成測試。

如何在所有internet_explorer節點上同時運行我的集成?

獎金的問題:,如果我想所有連接的節點上運行我的集成測試,不管瀏覽器的能力,我會怎麼做呢?

+0

丹尼爾,我和你有同樣的問題,你能找到解決方案嗎? – Farooq

+0

我發現如果您有1個Hub和3個節點正在運行,並且您在3個不同的選項卡中同時運行3個測試,則測試將在所有節點中運行。 1測試每個節點。基本上測試會在線檢測下一個空節點並在那裏運行。 – Farooq

回答

1

對於IE webdrive,您最多可以在一個物理節點上運行1個測試!如果你想通過IE webdriver實現並行性,你可以通過向集線器添加/註冊更多物理節點來嘗試。

關於以上屏幕截圖的集線器控制檯,它也顯示你只有一個IE圖標。該消息是錯誤的,「支持多達5 ....」,但你可以考慮在它下面顯示的各個瀏覽器的圖標的數量。

2

在這裏,您必須針對不同的瀏覽器啓動相同的測試,因此可以嘗試啓動兩個測試過程,即兩次運行相同的命令。

當您啓動節點時,網格將處理不同節點上的執行。

在你的情況下,你正在執行測試,並且只有在套件/進程就網格開始。僅用於測試目的嘗試兩次接連發射這些測試。如果您無法通過此操作實現使用Ant或類似的東西來控制您的測試執行。