Selenium-Grid工作原理
到此為止,其實(shí)還沒有提到selenium-grid,因?yàn)榈侥壳盀橹刮覀冞沒有需求說同時覆蓋多個平臺和瀏覽器,而selenium-grid在這種情況下會體現(xiàn)出其作用來。selenium-grid是用于設(shè)計幫助我們進(jìn)行分布式測試的工具,其整個結(jié)構(gòu)是由一個hub節(jié)點(diǎn)和若干個代理節(jié)點(diǎn)組成。hub用來管理各個代理節(jié)點(diǎn)的注冊和狀態(tài)信息,并且接受遠(yuǎn)程客戶端代碼的請求調(diào)用,然后把請求的命令再轉(zhuǎn)發(fā)給代理節(jié)點(diǎn)來執(zhí)行。使用selenium-grid遠(yuǎn)程執(zhí)行測試的代碼與直接調(diào)用Selenium-Server是一樣的[只是環(huán)境啟動的方式不一樣,需要同時啟動一個hub和至少一個node]:
java -jar selenium-server-standalone-x.xx.x.jar -role hub
java -jar selenium-server-standalone-x.xx.x.jar -role node
上面是啟動一個hub和一個node,若是同一臺機(jī)器要啟動多個node則要注意端口分配問題,可以這樣來啟動多個node:
java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5555
java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5556
java -jar selenium-server-standalone-x.xx.x.jar -role node -port 5557
調(diào)用Selenium-Grid的基本結(jié)構(gòu)圖如下:
上面是使用selenium-grid的一種普通方式,僅僅使用了其支持的分布式執(zhí)行的功能,即當(dāng)你同時需要測試用例比較多時,可以平行的執(zhí)行這些用例進(jìn)而縮短測試總耗時;除此之外,selenium-grid還支持一種更友好的功能,即可以根據(jù)你用例中啟動測試的類型來相應(yīng)的把用例轉(zhuǎn)發(fā)給符合匹配要求的測試代理。例如你的用例中指定了要在Liunux上FF的3.6版本進(jìn)行測試,那么selenium-grid會自動匹配注冊信息為Linux、且安裝了FF3.6的代理節(jié)點(diǎn),如果匹配成功則轉(zhuǎn)發(fā)測試請求,如果失敗則拒絕請求。使用selenium-grid的遠(yuǎn)程兼容性測試的代碼同上。其調(diào)用的基本結(jié)構(gòu)圖如下: