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