Selenium 4 的可觀察性
類別
診斷 Selenium 伺服器無法運作的問題從未如此容易。在 Selenium 4 中,我們整合了 OpenTelemetry,以協助您排除問題、最佳化效能,並提供系統的可見性。透過使 Selenium 伺服器可觀察,我們將更多力量掌握在您手中。
可觀察性的需求
Selenium 伺服器實現了分散式測試。測試不是在本地執行瀏覽器,而是使用指向伺服器的遠端瀏覽器驅動程式。伺服器做出「智慧型」決策,以在不同的遠端伺服器上執行測試。每個這樣的遠端伺服器都能够託管不同類型的瀏覽器和瀏覽器版本。
Selenium 3 使用 Hub 作為協調器。它接收新的會話請求,並將它們導向到適當的節點 (Node)。節點是瀏覽器本身運行的遠端終點。
Selenium 4 擴展了這一點,為使用者提供了一種設定完整分散式系統的方法。本質上,Selenium 4 將 Hub 拆分為不同的組件,並進行了額外的增強。然而,節點的角色保持不變。為了確保向後相容性和設定 Grid 的簡便性,新的 Selenium 伺服器中也提供了獨立模式和 hub-node 模式。
現在想像一下,運行一個具有數百個節點、不同瀏覽器和瀏覽器版本的完整分散式 Selenium Grid。在此基礎架構中進行大規模測試將涉及大量的請求。如何追蹤這些請求?進入 Selenium 可觀察性!
Selenium 如何提供可觀察性?
Selenium 使用 OpenTelemetry 來檢測追蹤和事件日誌。追蹤記錄請求的生命週期。當請求在分散式系統中移動時,請求的追蹤將包含沿途執行的所有關鍵操作的資訊。這些操作稱為跨度 (span)。跨度可以記錄定時日誌,稱為事件,理想情況下,這些事件封裝了系統的目前狀態。這些就是事件日誌。
預設情況下,Selenium 伺服器啟用追蹤。Selenium 伺服器可以在不同的模式下運行
追蹤和事件日誌適用於所有模式。查看追蹤的最簡單方法是以主控台日誌的形式呈現。預設情況下,Selenium 伺服器以 INFO 級別及以上級別列印日誌。若要在運行 Selenium Grid 時傳遞選擇的日誌級別,請使用 log-level 標誌。將日誌級別設定為 FINE 將以主控台日誌的形式顯示追蹤和事件日誌。
對於大型系統,以日誌形式使用追蹤可能效率不高。視覺化和查詢追蹤將快速幫助輕鬆排除請求故障。Jaeger 與 OpenTelemetry 無縫整合,以提供查詢、視覺化和收集請求追蹤的豐富體驗。
運行 java -jar selenium-server-<selenium-version>.jar info tracing。
它提供了詳細且更新的說明,以設定 Jaeger 與 Selenium 伺服器。視覺化追蹤使解釋追蹤和理解請求流程變得容易。現在 Grid 使用者可以輕鬆追蹤請求、深入鑽研錯誤或查詢它們以觀察正在發生的情況。

有關詳細資訊,請參閱 Selenium 可觀察性。
完整堆疊追蹤
Java 客戶端綁定支援追蹤。完整堆疊追蹤允許追蹤從客戶端到伺服器再返回的請求。雖然客戶端是單個組件,但客戶端追蹤將包含有助於建構請求的跨度。如果需要,可以更輕鬆地找到客戶端問題並修復測試。
我們已經了解了伺服器如何支援追蹤以及如何利用它。對於客戶端,將 Opentelemetry 依賴項添加到您的專案設定中,並添加必要的系統屬性以將追蹤導出到 Jaeger。有關詳細說明,請參閱 RemoteWebdriver client。
利用追蹤與事件日誌
解決問題的關鍵在於了解錯誤。對於已知的錯誤情況,事件日誌涵蓋了您所需的一切。它提供詳細的錯誤資訊和堆疊追蹤。按錯誤代碼查詢收集的追蹤以了解時間範圍,以識別錯誤的頻率。這將有助於確定錯誤是否是暫時性的,並據此採取行動。

觀察請求延遲以識別潛在的瓶頸。每個追蹤也將包含每個跨度所花費的時間。問題可能出在底層基礎架構設定、網路延遲或程式碼本身。無論原因為何,都更容易識別問題區域。
可觀察性正逐漸成為系統的必備屬性。Selenium 現在是可觀察的!繼續嘗試一下。如果您發現任何需要我們改進的地方,請告訴我們。




