Selenium 實現多機器部署分散式執行
阿新 • • 發佈:2020-10-27
1、selenium-grid簡介
selenium實現多機器分散式執行,依靠的是:selenium-grid(selenium的三大元件之一)。
selenium-grid允許使用者在不同的機器上並行地針對不同的瀏覽器執行測試。
selenium-grid採用的是Hub和Node模式,允許在分散式測試執行環境中執行測試。
selenium Hub用來管理各個selenium Node的註冊資訊和狀態資訊,並且接收遠端客戶端程式碼的測試呼叫請求,並把請求命令傳送給符合要求的;
selenium Node執行。
優點:
- 可以減少測試的執行時間;
- 支援針對多個執行環境的執行—不同系統的相容性;
- 支援所有場景擁有相同瀏覽器、型別、版本的測試—不同瀏覽器的相容性。
2、selenium-grid環境搭建
2.1下載selenium-server-standalone
啟動selenium-server-standalone是需要配置java環境
下載地址:https://www.selenium.dev/downloads/
2.2 selenium-grid搭建
- 準備2+臺機器
- 選擇其中一臺機器作為Hub。在該機器上啟動一個Hub和一個Node,開啟兩個終端分別輸入:
java -jar selenium-server-standalone-3.141.59.jar -role hub #埠預設4444
java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555
如果需要多個節點,改變埠增加即可。
可以在這臺計算機上訪問http://localhost:4444/grid/console
- 在遠端主機啟動node分支節點:
java -jar selenium-server-standalone-3.141.59.0.jar -role node -port 6666 -hub http://192.168.10.25:4444/grid/register
3、Selenium分散式實踐
from selenium.webdriver importRemote #定義主機與瀏覽器 lists = {'127.0.0.1:4444': 'chrome', '192.168.10.171:6666': 'internet explorer', '127.0.0.1:5555': 'firefox'} def browser(host,br_type): """ 啟動瀏覽器驅動 :return: 返回瀏覽器驅動URL """ try: driver = Remote(command_executor='http://' + host + '/wd/hub', desired_capabilities={ 'platform': 'ANY', 'browserName': br_type, 'version': "", 'javascriptEnabled': True } ) return driver except Exception as msg: print("驅動異常-> {0}".format(msg)) if __name__ == '__main__': for host, br_type in lists.items(): print(host,br_type) driver = browser(host,br_type) driver.get("https://www.baidu.com") driver.find_element_by_id("kw").send_keys("test selenium") driver.find_element_by_id("su").click() driver.quit()
執行指令碼,可看到本機會在chrome和firefox瀏覽器執行,並且在遠端主機192.168.10.171也會執行