Java + Selenium 系列之多線程並發執行用例


一、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方法

例如:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM