1. 程式人生 > >Selenium Grid使用與探索

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。

假設環境如下圖:

 env

  我們三臺機器,一臺機器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資源不會被釋放。