• Selenium Video Tutorials

Selenium Grid - 元件



Selenium Grid 最新版本為 4 版。早期版本為 1 版和 2 版。最新的 Selenium Grid 4 版是全新開發的,沒有利用舊版 Selenium Grid 的程式碼庫。

Selenium Grid 4 版進行了許多改進,並且比之前的 Selenium Grid 版本更符合規範。Selenium Grid 的各種功能更加細化,使其符合最新的軟體開發趨勢。

最新的 Selenium Grid 版本允許在三種不同的 Selenium Grid 模式下觸發測試執行。它們被稱為獨立模式、中心和節點模式以及分散式模式。

Selenium Grid 的不同元件

Selenium Grid 的不同元件列在下面:

  • 路由器 (Router)

  • 分發器 (Distributor)

  • 節點 (Node)

  • 會話對映 (Session Map)

  • 會話佇列 (Session Queue)

  • 事件匯流排 (Event Bus)

Selenium Grid 中的路由器

路由器是 Selenium Grid 的起始部分。它接收所有請求並將它們定向到正確的位置。如果向路由器發出新的會話請求,則新的會話佇列將從路由器接收該請求。對於現有會話請求,路由器將查詢會話對映以獲取節點 ID,該 ID 包含現有會話的 ID。最後,請求直接傳送到節點。

路由器有助於透過將請求分派到合適的 Selenium Grid 元件來維持 Selenium Grid 中的適當負載平衡,從而在不使任何元件過載的情況下保持最佳平衡。

Selenium Grid 中的分發器

分發器負責註冊和管理所有節點及其功能。節點透過分發器使用事件匯流排定向節點註冊事件來註冊。分發器訪問它並嘗試使用 HTTP 聯絡節點以確認其存在。如果確認存在,則分發器註冊節點,並使用 GridModel 跟蹤分發器的所有功能。

如果向路由器發出新的會話請求,則新的會話佇列將接收該請求並保留在佇列中。分發器會輪詢新的會話佇列以獲取其餘未解決的新的會話請求。一旦有了合適的機會,分發器就會分配一個合適的節點來啟動會話。會話啟動後,分發器維護會話對映(會話 ID 與執行會話的節點之間的連線)。

Selenium Grid 中的會話對映

會話對映是儲存會話 ID 與執行會話的節點之間連線的儲存區。會話對映幫助路由器將請求定向到節點。路由器還將向會話對映請求與會話 ID 相關的節點。

Selenium Grid 中的新會話佇列

新的會話佇列按先進先出 (FIFO) 順序儲存所有會話請求。請求超時和驗證超時的週期可以配置。

路由器將新的會話請求新增到新的會話佇列並等待其響應。新的會話佇列會不斷檢查佇列中是否有任何請求超時。如果超時,則該請求將不被接受並立即分離。

分發器會跟蹤任何可用的插槽。一旦存在,分發器就開始輪詢新的會話佇列以查詢任何匹配的請求,然後嘗試開始一個會話。

一旦找到當前空閒的任何節點的要求和功能的匹配項,分發器就會獲取該節點。如果所有合適的節點都忙,分發器會將請求重定向到佇列。如果請求在等待佇列時超時,則不再接受該請求。

會話正確開始後,分發器將會話詳細資訊轉發到新的會話佇列,然後傳送迴路由器,最後傳送到客戶端。

Selenium Grid 中的節點

Selenium Grid 包含多個節點。節點跟蹤在其使用機器中所有可用的瀏覽器。節點藉助事件匯流排註冊到分發器。註冊後,將傳送包含配置詳細資訊的註冊訊息。

節點預設情況下注冊機器中正確路徑中存在的所有瀏覽器驅動程式。它還在 CPU 中為不同的瀏覽器(如 Chrome、Firefox、Safari 等)生成槽位。可以設定配置,以便在 Docker 容器上執行會話並轉發命令。

節點僅執行它收到的命令和響應並管理其流程,它無法處理或驗證這些命令。節點中配置的作業系統可能相同也可能不同。

Selenium Grid 中的事件匯流排

事件匯流排負責節點、新的會話佇列、分發器和會話對映之間的連線路徑。在 Selenium Grid 中,各個元件之間的通訊以訊息的形式進行,而不是透過 HTTP 請求和響應。在分散式系統中啟動 Selenium Grid 中的會話時,應首先啟動事件匯流排。

下圖顯示了 Selenium Grid 各個元件之間的互動:

Selenium Grid Components

本教程總結了關於 Selenium Grid 元件的全面介紹。我們首先描述了 Selenium Grid 的不同元件,以及 Selenium Grid 中的路由器、分發器、會話對映、節點和事件匯流排。

這使您掌握了 Selenium Grid 元件的深入知識。明智的做法是繼續練習您所學的內容,並探索與 Selenium 相關的其他內容,以加深您的理解並拓寬您的視野。

廣告