Selenium 简明教程
Selenium Grid - Components
Selenium Grid 的最新版本为版本 4。Selenium Grid 的早期版本为版本 1 和 2。最新版本 Selenium Grid 4 是在不借用 Selenium Grid 旧版本代码库的基础上新开发的。
Selenium Grid 4 版本有很多改进,并且比以前版本的 Selenium Grid 更符合标准。Selenium Grid 的各种功能变得更加精细,以便符合最新的软件开发趋势。
最新版本的 Selenium Grid 允许在三种不同的 Selenium Grid 模式下触发测试执行。它们被称为 Standalone、Hub 和 Nodes 以及 Distributed。
Different Components of Selenium Grid
Selenium Grid 的不同组件如下所示 −
-
Router
-
Distributor
-
Node
-
Session Map
-
Session Queue
-
Event Bus
Router in Selenium Grid
路由是 Selenium Grid 的起始部分。它获取所有请求并将它们导向正确的位置。如果给路由分配新的会话请求,则新会话队列将从路由收到该请求。对于现有会话请求,路由将查询会话映射以获取节点 ID,它保存现有会话的 ID。最后,请求会直接发送到节点。
路由对于在 Selenium Grid 中维持适当的负载平衡非常重要,通过将请求分配到适当的 Selenium Grid 组件,可以在不过载任何组件的情况下维持最佳平衡。
Distributor in Selenium Grid
分发器负责注册和管理所有节点及其功能。分发器通过事件总线指导节点注册事件来注册节点。分发器访问它,并尝试使用 HTTP 访问节点以确认其存在。如果确认存在,则分发器会注册节点并使用 GridModel 跟踪该节点的所有功能。
如果给路由分配新的会话请求,则新会话队列将接收该请求并保存在队列中。分发器会轮询新会话队列以获取所有其他未解决的新会话请求。一旦有机会,分发器就会分配一个适当的节点,可以在该节点启动会话。启动会话后,分发器会维护会话映射(这是会话 ID 与运行会话的节点之间的连接)。
Session Map in Selenium Grid
会话映射是一种存储器,它保存会话 ID 与执行会话的节点之间的连接。会话映射帮助路由将请求导向节点。路由还会向会话映射请求与会话 ID 相关的节点。
New Session Queue in Selenium Grid
新会话队列以先入先出的顺序存储所有会话请求。可以配置请求超时以及验证超时的周期。
路由将新会话请求附加到新会话队列并等待其响应。新会话队列不断检查队列中的任何请求是否超时。如果有超时,则不接受该请求并立即分开。
Distributor 会跟踪所有可用的时隙。一旦存在此类时隙,Distributor 会开始轮询 New Session Queue 寻找任何匹配的请求,之后它会尝试开始会话。
一旦找到与当前空闲任何 Node 的需求和功能匹配的内容时,Distributor 会认领它。如果所有合适的 Node 都在忙,Distributor 会将请求重定向到队列中。如果请求在队列中等待时超时,则不再接受该请求。
一旦成功开始会话,Distributor 会将会话详情转发到 New Session Queue,再将其发回给路由器,最后发回给客户端。
Node in Selenium Grid
Selenium Grid 由多于一个 Node 组成。Node 会跟踪机器中所有可获取的浏览器。它借助 Event Bus 向 Distributor 注册。注册完成后,会发送包含配置详情的注册消息。
Node 默认注册机器正确路径中存在的所有浏览器驱动程序。它还会在 CPU 中为 Chrome、Firefox、Safar 等不同浏览器创建时隙。可以设置配置,以便在 Docker 容器中运行会话并转发命令。
Node 只会运行获取的命令和响应,并管理其流,无法处理或验证这些命令。Node 中配置的操作系统可能相同也可能不相同。
Event Bus in Selenium Grid
Event Bus 负责 Node、New Session Queue、Distributor 和 Session Map 之间的连接路径。在 Selenium Grid 中,每个组件之间的通信都通过消息进行,而不是借助 HTTP 请求和响应。在分布式系统中 Selenium Grid 中启动会话时,应首先启动 Event Bus。
Selenium Grid 中各种组件之间的交互在以下图表中显示 −
在此,我们结束了关于 Selenium Grid-组件教程的全面介绍。我们首先描述了 Selenium Grid 的不同组件是什么,即 Selenium Grid 中的路由器、Distributor、Session Map、Node 和 Event Bus。
借此,您可以深入了解 Selenium Grid 组件。明智的做法是及时练习所学内容并探索与 Selenium 相关的其他内容,以加深理解并拓宽视野。