Selenium Grid使用與探索
一、啟動Grid,順序執行測試案例:
進入到Selenium Grid的根目錄,
Hub啟動成功後,首先來試執行一下,在一個新終端視窗中,執行命令:ant run-demo-in-sequence
通過Remote-Control,Selenium測試案例將被順序執行,Hub只啟動一個selenium-RC,這些測試案例都是在一個selenium-RC中執行。這樣並不讓人感到激動,因為通過正常的Selenium-RC,一樣可以辦到,對吧。
但這僅僅是一個起步,你的目標可能是想並行地執行測試案例。
此時可用的Remote Controls:
Host | Port | Environment |
localhost | 5555 | *firefox |
二、 與Grid在同一臺機器上,只要指定不同的埠號,可以執行多個RC在同一臺機器上,並行執行測試案例:
分別在3個終端進入到Selenium Grid的根目錄,執行如下操作:
ant -Dport=5556 launch-remote-control
ant -Dport=5557 launch-remote-control
ant -Dport=5558 launch-remote-control
執行後,通過訪問Grid控制檯,驗證RC註冊成功,下圖可以看到開啟了3個remote-control(5555埠是之前執行用例時預設啟動的):
注意:同一臺機器上啟動的Client的埠號不可重複
然後,我們來看看並行執行測試案例,在一個新終端視窗中,執行命令:ant run-demo-in-parallel
通過Remote-Control,Selenium測試案例將被併發執行,這些測試案例都由Hub進行資源分配,在不同的selenium-RC中執行,達到併發效果。
可以從Hub控制檯看到調動了4個selenium-RC來同步工作。
此時可用的Remote Controls:
Host | Port | Environment |
localhost | 5555 | *firefox |
localhost | 5556 | *firefox |
localhost | 5557 | *firefox |
localhost | 5558 | *firefox |
三、與Grid不在同一臺機器、不同作業系統、甚至不同瀏覽器下,執行Selenium Remote Control:
ant -Dport="5555" –Dhost=remote-control的IP地址 -DhubURL=http://localhost:4444 -Denvironment="*iexplore" -DseleniumArgs="-multiWindow" launch-remote-control 來啟動第一個Client。
引數解釋:
-Dport:Client的埠號
-Dhost:Client的hostname,如果沒有可以用IP代替
-DhubURL:Hub控制檯的URL
-Denviroment:Client所支援的瀏覽器型別(更多型別請檢視控制檯顯示的Browser列表)如果不指定Denviroment引數,則在不同機上預設用*firefox執行用例。
-DseleniumArgs:SeleniumRC啟動的引數
launch-remote-control:表示啟動一個Client
啟動其它Client同理:參考上述引數,
注意:啟動client後,再次檢視http://localhost:4444/console ,發現Available Remote Controls列表出現剛啟動的Client。
假設環境如下圖:
我們三臺機器,一臺機器hub.thoughtworks.com執行grid,其它兩臺rc1和rc2分別執行兩個RC.則我們需要在啟動RC時,使用下列命令指定相應的引數:
ant -Dport=<port> -Dhost=<hostname> -DhubURL=<hub url> -Denvironment="Firefox on Windows" launch-remote-control
其中,-Dport指定RC的埠號,-Dhost指定RC所在機器的Host名。-DhubURL指定Grid機器的URL,-Denvironment標示RC的瀏覽器和操作平臺。
具體可參考Grid控制檯說明,也可以檢視grid_configuration.yml配置檔案。
URL可以使Host Name,也可以是TCP/IP。
按照上圖所示引數執行完畢後,通過Grid控制檯驗證成功結果如下:
Host |
Port |
Environment |
rc1.seleniumhq.org |
5555 |
Firefox on Windows |
rc1.seleniumhq.org |
5556 |
Firefox on Windows |
rc2.seleniumhq.org |
5555 |
Firefox on Mac |
rc2.seleniumhq.org |
5556 |
Firefox on Mac |
這樣,Selenium Hub會確保提供給測試案例使用的Remote-Control。需要注意的是,Remote Control的環境引數可以隨意註冊,即使FireFox瀏覽器工作在Linux下,你也可以向Hub註冊,說它工作在OS X下。這就意味著Hub不會檢驗註冊資訊的正確性,你南大要自行保證這一點。
可以在不同平臺下執行測試案例,在一個新終端視窗中,執行命令:ant run-demo-for-multiple-environments
四、Selenium Grid的一些缺點:
一些目前已知的會影響使用的問題(可以通過重啟服務來解決)。
Hub監控頁面不能快速地更新連結到它上面的Client資源
如果Selenium指令碼執行被意外終止,或者remote-control被關閉,Client資源不會被釋放。