1. 程式人生 > 其它 >Selenium Grid-自動化分散式執行

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 節點在遠端端工作

 

環境準備步驟:

  1. 測試機器安裝 JDK,配置環境變數
  2. 下載 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()

 

注:目前開啟瀏覽器後就停止了,還不清楚原因,有知道的可以告知下,感謝!