一,selenium grid是什么?
selenium是一個用於UI自動化測試的工具。
selenium grid是selenium家族中的三大組件的一員。selenium grid有兩個版本,grid1和grid2,。目前grid1已經基本被廢棄了。grid2的出版要晚於selenium2,所以grid2支持selenium2的所有的功能。
二、為什么要用grid?
1,當我們在selenium webdriver中寫好了各種腳本時,我們可能需要在不同的系統里,不同的瀏覽器下去運行。
2,我們的一個系統,可能有上萬條用例需要執行。我們又不希望用例在回歸時一條一條被執行,而是希望能夠節省時間的批量執行用例。
基於以上兩點,我們需要這個強大的組件grid。
三、grid可以做些什么?
1,selenium grid不是用來寫腳本代碼的,只負責運行。所以我們的腳本還是需要利用webdriver,在我們的開發環境中去寫好。
2,selenium grid給我們提供了兩個東西。一個叫hub,一個叫node。
3,hub被稱為總控節點。他是你加載所有的測試機器,一個grid里面只有一個hub。打個比方:hub就像我們的交換機,他負責接通網線,把網絡分發給后面的各種設備,不管我們是用手機上網,還是電腦上網,都是連着我們的交換機。grid中的hub,總管着的是腳本代碼。
4,node稱之為節點。他就好比我們的連接網絡的各個終端設備,比如電腦,比如手機,iPad之類等等。所以grid中,可以有很多個node,node用於接收代碼,且在不同的瀏覽器中運行代碼。
四、grid怎么用?
1,准備文件
grid其實也和webdriver一樣是一個jar包,而且grid是在dos命令行下去執行的。所以我們最好將grid所要用到的所有文件,都放在某個根目錄下的文件夾中,方便使用。
2,打開命令行啟動hub
在命令行中輸入命令:
java jar selenium-server-standalone-2.53.0.jar –role hub
說明:
1,selenium-server-standalone-2.53.0.jar 為文件夾中,jar包的名字。
2,-role hub 告訴命令行,你本次注冊的角色是hub
3,grid默認的端口是4444,如果需要改端口,可以在該命令后面直接加上參數-port 5555
4,也可以通過外部的json文件修改hub的相關配置。后面跟上參數-hubConfig 【json文件名】(確保json文件是正確的)
5,hub啟動后,可以通過http://localhost:4444/grid/console查看hub的相關信息。
3,啟動node
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://localhost:4444/grid/register
說明:
1,-role node 表示此次我們注冊的是node節點。
2,-hub http://localhost:4444/grid/register 表示我此次注冊的node節點,是注冊到我上次啟動的hub中的。localhost:表示的其實是ip地址,如果是想要自己機子上注冊,那就用本機的地址注冊。如果要實現多台機器的注冊,那么要先保證hub,和node的機子在同一個局域網中。
3,同樣可以通過外部文件修改node的配置。
node配置文件展示

4,修改腳本,運行腳本
腳本中第一要修改的地方,是啟動webdriver瀏覽器的地方
URL中的一串網址:為你電腦中的hub注冊的地址。
修改好腳本就可以運行,運行后,你會在http://localhost:4444/grid/console地址中,看到瀏覽器有置灰。表示成功運行grid中的節點成功運行。
來源:簡書