Selenium 4 中的可观测性
分类
当 Selenium 服务器无法正常工作时,诊断问题从来都不是一件容易的事。在 Selenium 4 中,我们集成了 OpenTelemetry,以帮助您排查问题、优化性能并提供对系统的可见性。通过使 Selenium 服务器可观察,我们正在将更多权力交到您手中。
可观察性的需求
Selenium 服务器支持分布式测试。测试不是在本地运行浏览器,而是使用指向服务器的远程浏览器驱动程序。服务器做出“智能”决策,以在不同的远程服务器上运行测试。每个这样的远程服务器都能够托管不同类型的浏览器和浏览器版本。
Selenium 3 使用 Hub 作为协调器。它接收新的会话请求并将它们定向到适当的 Node。Node 是浏览器本身运行的远程端。
Selenium 4 扩展了此功能,为用户提供了一种设置完整分布式系统的方法。本质上,Selenium 4 将 Hub 拆分为具有其他增强功能的不同组件。但是,Node 的作用保持不变。为了确保向后兼容性并简化 Grid 的设置,新的 Selenium 服务器中还提供了独立模式和 hub-node 模式。
现在想象一下运行一个完整的分布式 Selenium Grid,其中包含数百个具有不同浏览器和浏览器版本的 Node。在此类基础设施中进行大规模测试将涉及大量的请求。如何跟踪这些请求?这就引入了 Selenium 可观察性!
Selenium 如何提供可观察性?
Selenium 使用 OpenTelemetry 来检测跟踪和事件日志。跟踪记录请求的生命周期。当请求在分布式系统中移动时,请求的跟踪将包含其沿途执行的关键操作的所有信息。这些操作称为跨度。跨度可以记录定时日志,称为事件,这些事件理想情况下封装了系统的当前状态。这些是事件日志。
默认情况下,Selenium 服务器启用跟踪。Selenium 服务器可以在不同的模式下运行
所有模式都提供跟踪和事件日志。查看跟踪的最简单方法是控制台日志的形式。默认情况下,Selenium 服务器以 INFO 级别及以上打印日志。要在运行 Selenium Grid 时传递所选的日志级别,请使用 log-level 标志。将 log-level 设置为 FINE 将以控制台日志的形式显示跟踪和事件日志。
对于大型系统,将跟踪作为日志使用可能效率不高。可视化和查询跟踪将快速帮助轻松排查请求故障。Jaeger 与 OpenTelemetry 无缝集成,以提供丰富的查询、可视化和收集请求跟踪的体验。
运行 java -jar selenium-server-<selenium-version>.jar info tracing
。
它提供了详细且更新的说明,以将 Jaeger 与 Selenium 服务器一起设置。可视化跟踪可以轻松解释跟踪并理解请求流。现在,Grid 用户可以毫不费力地跟踪请求、深入查看错误或查询它们以观察正在发生的事情。

有关详细信息,请参阅 Selenium 可观察性。
全栈跟踪
Java 客户端绑定支持链路追踪。全栈链路追踪允许追踪从客户端到服务器再返回的请求。尽管客户端是一个单独的组件,客户端的追踪信息将包含有助于构建请求的跨度。如果需要,可以更容易地定位客户端问题并修复测试。
我们已经了解了服务器如何支持链路追踪以及如何利用它。对于客户端,请将 Opentelemetry 依赖项添加到您的项目设置中,并添加必要的系统属性以将追踪信息导出到 Jaeger。有关详细说明,请参阅RemoteWebdriver 客户端。
利用跟踪和事件日志
解决问题的关键在于了解错误。对于已知错误情况,事件日志可以满足您的需求。它提供详细的错误信息和堆栈追踪。按错误代码查询收集的追踪信息,以确定错误发生的频率。这将有助于确定错误是瞬时的还是持续的,并据此采取行动。

观察请求延迟以识别潜在的瓶颈。每个追踪信息还将包含每个跨度所花费的时间。问题可能出在底层基础设施设置、网络延迟或代码本身。无论原因是什么,都更容易识别问题区域。
可观测性正逐渐成为系统必备的属性。Selenium 现在是可观测的!继续尝试吧。如果您发现任何需要我们改进的地方,请告诉我们。