? 前 言
我們都知道 Selenium 是一款在 Web 應用測驗領域使用的自動化測驗工具,而 Selenium Grid 是 Selenium 中的一大組件,通過它能夠實作分布式測驗,能夠幫助團隊簡單快速在不同的環境中測驗他們的 Web 應用,
分布式執行測驗其實并不是一個非常難以理解的概念,簡單來說,就是能夠同時在不同的環境中同時執行測驗,通過 Selenium Grid,我們可以通過在客戶端發送命令到遠程端的瀏覽器實體,在遠程端執行 WebDriver 腳本,可以在多臺遠程的機器上并行運行測驗,
Selenium Grid 4 新特性介紹
在以往的 Selenium Grid 版本中(V1-V3)其架構都比較簡單,在全新的 Selenium Grid 4 版本中其架構變得有些復雜,但也更加靈活和強大了,
特性一:Hub 和 Node 使用同一個 jar 服務
在之前,我們要配置 Selenium Grid 時需要分別啟動 Hub 和 Node 節點,而在全新的 Selenium Grid 4 版本中 Hub 和 Node 都是用同一個 jar 檔案,一旦服務啟動之后將會同時作為 Hub 和 Node 角色,
特性二:架構優化
在之前的 Selenium 版本中,Selenium Grid 由 Hub 和 Node 組成,Hub 作為總控中心負責 Node 節點注冊及轉發請求,Node 節點則負責來自 Hub 的請求及執行測驗腳本,具體參考我之前的文章 Selenium Grid- 讓自動化分布式執行變得可能
文章鏈接:http://testingpai.com/article/1596527701728

在 Selenium Grid 4 版本的全新架構中劃分成了組件:Router、Distributor、Node、Session Map、Session Queue、Event Bus
-
Router - 監聽新會話請求
-
Distributor - 選擇合適的 Node 執行測驗
-
Node - 在對應主機執行測驗
-
Session Map - 給 Node 節點標記 session ID
-
Session Queue - 維護所有的會話佇列
-
Event Bus - 作為 Grid 各組件通訊橋梁

特性三:不同的 Gird 運行模式
在 Selenium Grid 3 及之前版本中只能使用 Hub 和 Node 作業模式,Selenium Grid 4 除了提供對經典的 Hub 和 Node 模式支持之外,還引入了另外兩種全新的模式 standalone、fully distributed,
-
Standalone 模式
standalone 模式能夠在一臺機器上面執行完整的分布式功能,是 Selenium Grid 的最簡單的模式,默認情況下,服務會在 http://localhost:4444 地址監聽,我們需要通過 RemoteWebDriver 指向這個地址,
-
Classical 模式
classical 模式也可以稱為 hub 和 node 模式,此項模式比較適用于中小型分布式執行要求,根據需要設定一個服務節點(hub)和多個代理節點(node),
-
Fully Distributed 模式
對于大型的分布式要求,可以采用完全分布式模式,這是 Selenium Grid 4 中最高級的模式,這種模式下需要自己啟動每個組件,
Standalone 模式使用
在 standalone 模式下,Node 和 Hub 都是運行在相同的 Selenium Grid 服務中
Step1:準備需要的環境
因為后續下載的 Selenium 組件是 jar 檔案,所以需要準備 Java 的環境去運行,如果沒有安裝 Java 的環境,可以進入到 https://www.oracle.com/java/technologies/downloads/下載安裝 JDK 并且配置環境變數,配置完成之后進入到命令列終端,輸入以下命令檢測:
java -version
如果 Java 環境配置成功,你會看到相關的 Java 版本資訊,
Step2:下載瀏覽器驅動
下一步需要根據你當前的作業系統以及瀏覽器選擇下載合適的驅動,
-
Chrome Driver 地址:https://npm.taobao.org/mirrors/chromedriver
-
Firefox Driver 地址:https://npm.taobao.org/mirrors/geckodriver
驅動下載完成后放置到某個目錄下,并將目錄添加到系統的環境變數中,在 Selenium Grid 服務啟動時將會自動識別,如果不做此操作 Selenium Grid 將無法在在這些瀏覽器上執行測驗,

Step3:創建 Selenium Grid
這一步我們需要下載 Selenium Server 對應地址:https://www.selenium.dev/downloads/
下載完畢之后將其放置到任意的目錄中,接下來在命令列終端運行以下命令啟動 Selenium Grid
java -jar selenium-server-4.1.1.jar standalone
你將會看到下面的資訊輸出,我們可以看到 Chrome 以及 Firefox 都被注冊到了 Grid 中
D:\Selenium Grid>java -jar selenium-server-4.1.1.jar standalone16:59:31.406 INFO [LogManager$RootLogger.log] - Using the system default encoding16:59:31.409 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing16:59:37.876 INFO [NodeOptions.getSessionFactories] - Detected 8 available processors16:59:38.046 INFO [NodeOptions.discoverDrivers] - Discovered 2 driver(s)16:59:38.071 INFO [NodeOptions.report] - Adding Firefox for {"browserName": "firefox"} 8 times16:59:38.072 INFO [NodeOptions.report] - Adding Chrome for {"browserName": "chrome"} 8 times
我們可以通過訪問 http://localhost:4444/status 看到當前的狀態
{"value": {"ready": true,"message": "Selenium Grid ready.","nodes": [{"id": "4bb7d6f7-466d-4537-87ca-1441023e0fff","uri": "http:\u002f\u002f192.168.56.1:4444","maxSessions": 8,"osInfo": {"arch": "amd64","name": "Windows 10","version": "10.0"},"heartbeatPeriod": 60000,"availability": "UP","version": "4.1.1 (revision e8fcc2cecf)","slots": [{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "b8a3c42e-c8fb-493c-bb3c-7b6deaa2a02a"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "0eaffe11-62a1-4593-a94f-80151a69c24b"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "7c7211bf-58a7-4ddb-9246-effecbf910ce"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "437be3d5-bdf0-44aa-b401-51f7b9136b15"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "f799da78-4ac8-4799-8d4b-50314a954c01"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "10bd31b1-acf6-4006-af7c-47ea448a6a33"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "31c91763-4aef-4379-910c-647266806fce"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "20caece4-cb26-4914-8dfa-80fffd37191f"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "53a12fa7-63a4-474d-bab4-5e6fc6976ff1"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "7d1bb113-1050-482f-bd5d-939362270fdf"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "c4993662-f2f1-46e6-ab6c-6eae7727dd68"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "d9fcf1d0-cba0-4a53-bba4-934f35be8ccb"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "8b8bdd06-4c6f-4344-812a-3429b5d013c7"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "f7ca236a-7c1f-48ba-93e1-25745ed18493"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "chrome","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "3116789e-3fab-4bcc-89fe-9c0b788bb29f"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}},{"id": {"hostId": "4bb7d6f7-466d-4537-87ca-1441023e0fff","id": "3abf1ce7-cd89-48ae-a33d-252abd9a29c5"},"lastStarted": "1970-01-01T00:00:00Z","session": null,"stereotype": {"browserName": "firefox","platformName": "WIN10"}}]}]}}
我們還可以可以通過在瀏覽器端輸入 http://localhost:4444/grid/console 來查看 Grid 控制臺,也可以看到 standalone 模式下,在 node 節點中有對應的 Chrome 瀏覽器和 Firefox 瀏覽器,

Step4:使用 Selenium Grid 執行測驗
在上述步驟中,我們通過最簡單的 standalone 模式配置好了 hub 以及 node,下一步我們將會執行我們的自動化測驗,
在撰寫測驗腳本時,我們只需要通過 RemoteWebDriver 指向 http://localhost:4444/
@Testpublic void testChrome() throws MalformedURLException {DesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(CapabilityType.BROWSER_NAME,"chrome");WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/"), caps);driver.manage().window().maximize();driver.get("http://testingpai.com/");}@Testpublic void testFirefox() throws MalformedURLException {DesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(CapabilityType.BROWSER_NAME,"firefox");WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/"), caps);driver.manage().window().maximize();driver.get("http://testingpai.com/");}
上述示例客戶端腳本和 Grid 服務都是在本機,當然在實際應用中我們可以將 Grid 服務和腳本分別部署在兩臺主機上,此時腳本中指向的地址:http://localhost:4444/換成 Grid 服務所在主機的對外 IP 地址即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400522.html
標籤:其他
上一篇:計算機課程設計SpringBoot在線心理咨詢系統【代碼講解+安裝除錯+檔案指導】
下一篇:基于jsp的論壇系統(分享)
