1. 程式人生 > 實用技巧 >Selenium 實現多機器部署分散式執行

Selenium 實現多機器部署分散式執行

1、selenium-grid簡介

selenium實現多機器分散式執行,依靠的是:selenium-grid(selenium的三大元件之一)。

selenium-grid允許使用者在不同的機器上並行地針對不同的瀏覽器執行測試。

selenium-grid採用的是Hub和Node模式,允許在分散式測試執行環境中執行測試。

selenium Hub用來管理各個selenium Node的註冊資訊和狀態資訊,並且接收遠端客戶端程式碼的測試呼叫請求,並把請求命令傳送給符合要求的;

selenium Node執行。

優點:

  1. 可以減少測試的執行時間;
  2. 支援針對多個執行環境的執行—不同系統的相容性;
  3. 支援所有場景擁有相同瀏覽器、型別、版本的測試—不同瀏覽器的相容性。

2selenium-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 import
Remote #定義主機與瀏覽器 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也會執行