一、Selenium Grid
什么是Selenium Grid?
Selenium Grid是Selenium的三⼤組件之一
Selenium Grid允許⽤⼾同時在不同的機器和系統上測試不同瀏覽器
二、Selenium Grid組成
hub節點
中⼼節點,或總控節點 管理各個node節點的注冊信息和狀態信息 接收並轉發客⼾端(測試腳本)請求到合適的node節點 node節點
⼦節點,或代理節點 負責注冊配置信息到hub節點(平台、瀏覽器、瀏覽器版本等) 負責接收來⾃hub節點的轉發的請求以執⾏具體⽤例 也可單獨作為遠程節點執⾏測試⽤例
三、環境准備
測試機器安裝JDK,配置環境變量
下載selenium-server-standalone-x.x.x.jar
參考鏈接https://npm.taobao.org/mirrors/selenium
四、配置運⾏
1、啟動hub
java -jar selenium-server-standalone-3.141.59.jar -role hub -port 8888 -maxSession 10
參數解釋:
java -jar selenium-server-standalone-3.141.59.jar ----------運⾏jar包
-role hub ----------以hub的⻆⾊運⾏
-port 8888 ----------指定hub運⾏的端⼝(默認為4444)
-maxSession 10 ---------最⼤的處理會話
為了⽅便執⾏,可以寫成bat腳本再執⾏
2、查看hub的運⾏狀態
瀏覽器中輸⼊ http://localhost:8888/grid/console ,可以打開hub運行狀態
3、啟動node
以chrome的配置為例:
java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.X.X:8888/grid/register" -port 5558 -browser "browserName=chrome,maxInstances=2,version=68,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平台名稱
轉換成bat腳本如下:
4、執⾏腳本
node節點配置說明
node節點可以配置單⼀瀏覽器,如chrome、firefox、IE等等
五、TestNG並發執⾏測試
Selenium Grid能夠分布式在不同機器上運⾏不同瀏覽器,但是我們看到的串⾏的效果(也就是⼀個瀏覽器執⾏結束 后,再運⾏另外⼀個瀏覽器)。要達到並發執⾏的效果,Selenium Grid是做不
的,我們需要通過TestNG單元測試 框架所帶的並發執⾏機制。並發執⾏能夠帶來的好處:
減少了執⾏時間:並⾏測試也就意味着多個瀏覽器可以在同⼀時間被同時執⾏,從⽽減少了整體測試所花費的時間,允許多個線程並⾏同時執⾏⼀個測試腳本/不同的測試腳本
TestNG並發測試配置
解釋:
parallel=tests表⽰以test標簽對為⼀個線程單位
thread-count=2 線程數量
六、線程安全
在使用多線程執行用例的時候,我們發現有時候會出現錯誤,是因為共用靜態變量時,同時執行會導致一個被占用,此時需要用ThreadLocal機制
1、創建一個靜態的變量
2、設計兩個方法去存取 或存放驅動
3、在調用驅動的時候,使用getDriver方法
例如: