Selenium Grid-自動化分散式執行
Selenium Grid 是 Selenium 的三大元件之一,允許使用者同時在不同的機器和系統上測試不同瀏覽器。
也就是說 Selenium Grid 支援分散式的測試執行。它可以讓你的測試用例在一個分散式的執行環境中執行。
由上圖可見,測試指令碼會通過 selenium hub 節點分發給不同的 node 節點,而不同的 node 節點所在的作業系統和搭載的瀏覽器型別可以是不同的,
hub 節點:
- 中心節點,或總控節點
- 管理各個 node 節點的註冊資訊和狀態資訊
- 接收並轉發客戶端(測試指令碼)請求到合適的 node 節點
node 節點:
- 子節點,或代理節點
- 負責註冊配置資訊到 hub 節點(平臺、瀏覽器、瀏覽器版本等)
- 負責接收來自 hub 節點的轉發的請求以執行測試指令碼
- 也可單獨作為遠端節點執行測試指令碼
環境說明:
- 本地端系統為 win10,搭載 V100 版本的 Chrome 瀏覽器,
- 遠端端系統為 win7,搭載 V8 版本的 IE 瀏覽器,
- 兩臺主機能夠相互 ping 通
- hub 節點和 node1 節點都是在本地端工作,node2 節點在遠端端工作
環境準備步驟:
- 測試機器安裝 JDK,配置環境變數
- 下載 selenium-server-standalone-x.x.x.jar
http://selenium-release.storage.googleapis.com/index.html?path=4.0/
3.下載瀏覽器驅動
注:IE 驅動和 selenium 依賴在一起
配置執行
1、本地端啟動 hub
java -jar selenium-server-standalone-4.0.0-alpha-2.jar -role hub -port 8888 -maxSession 10
引數解釋:
- Java -jar selenium-server-standalone-4.0.0-alpha-2.jar 執行 jar 包
- -role hub 以 hub 的角色執行
- -port 8888 指定 hub 執行的埠(預設為 4444)
- -maxSession 10 最大的處理會話
2、檢視 hub 的執行狀態
瀏覽器中輸入 http://localhost:8888/grid/console 進入到到 hub 的 console 控制檯
3、啟動 node1
node1 節點工作在本地端,配置的瀏覽器為 V100 的 Chrome
java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-4.0.0-alpha-2.jar -role node -hub "http://192.168.1.150:8888/grid/register/" -port 5558 -browser "browserName=chrome,maxInstances=2,version=100,platform=WINDOWS"
引數解釋:
- -Dwebdriver.chrome.driver="chromedriver.exe" 指定 chromeDriver 驅動所在的路徑(本地)
- -jar selenium-server-standalone-3.141.59.jar 執行 jar 包
- -role node 以 node 角色執行
- -hub "http://192.168.1.222:8888/grid/register" 指定要連結的 hub 地址,這樣 node 才能和 hub 通訊連線上
- -port 5558 node 的執行埠
- -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"
- browserName=chrome 執行的瀏覽器名稱
- maxInstances=2 最多支援兩個瀏覽器例項
- version=68 瀏覽器版本號
- platform=WINDOWS 平臺名稱
執行之後的效果:
瀏覽器再次重新整理訪問 hub 的 console 端:
4、啟動遠端端的 node2 節點
node2 節點工作在遠端端,配置的瀏覽器為 V56 的 Chrome
啟動配置為
java -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5558 -browser "browserName=firefox,maxInstances=2,version=56,platform=WINDOWS"
瀏覽器再次重新整理訪問 hub 的 console 端,可以看到兩個 node 節點已經成功註冊到 hub 節點上
我用的IE
java -Dwebdriver.ie.driver="IEDriverServer.exe" -jar selenium-server-standalone-4.0.0-alpha-2.jar -role node -hub "http://192.168.1.150:8888/grid/register/" -port 5558 -browser "browserName=ie,maxInstances=2,version=8,platform=WINDOWS"
配置多個瀏覽器:
java -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-4.0.0-alpha-2.jar -role node -hub "http://192.168.1.150:8888/grid/register" -port 5555 -browser "browserName=internet explorer,maxInstances=2,version=8,platform=WINDOWS" -browser "browserName=chrome,maxInstances=3,version=100,platform=WINDOWS"
1 import time 2 3 from selenium import webdriver 4 5 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 6 7 driver = webdriver.Remote( 8 9 command_executor='http://192.168.1.150:4444/wd/hub', 10 11 desired_capabilities=DesiredCapabilities.CHROME) 12 13 # driver = webdriver.Chrome() 14 15 driver.get('http://www.baidu.com') 16 17 print(driver.title) 18 time.sleep(3) 19 20 driver.quit()
注:目前開啟瀏覽器後就停止了,還不清楚原因,有知道的可以告知下,感謝!