• Selenium Video Tutorials

Selenium Grid - 端点



Selenium Grid 4 最新版本是在不依赖旧版本 Selenium Grid 代码库的情况下开发的。这个最新的 Selenium Grid 4 版本具有一些高级功能,例如 Grid 端点。

最新版本的 Selenium Grid 允许以三种不同的 Selenium Grid 模式触发测试执行。它们被称为独立模式、中心和节点模式以及分布式模式。

获取 Grid 状态

Grid 状态用于提供有关 Selenium Grid 当前状态的详细信息。详细信息包括有关所有已注册节点的信息。对于每个单独的节点,Grid 状态会告知节点是否可用,以及在其上运行的会话以及槽位。

curl Get https://127.0.0.1:4444/status'

当 Selenium Grid 以独立模式运行时,Grid URL 指向独立服务器地址。在中心节点模式下,Grid URL 指向中心服务器地址;在分布式模式下,Grid URL 指向路由器服务器地址。

在上例中,https://127.0.0.1:4444/status 是上述所有模式默认使用的 URL。

如果只有一个节点,则节点 URL 指向https://127.0.0.1:5555

节点状态用于衡量节点的状况。分发器以一定间隔发送节点状态消息,并将相同的信息发送到 Grid 模型。这包括有关可用性、会话和槽位的详细信息。

cURL --request GET 'https://127.0.0.1:5555/status'

从 Selenium Grid 中移除节点

curl 命令用于从 Selenium Grid 中移除节点。从 Grid 中移除节点不会导致在节点中运行的任何当前会话终止。会话将继续执行,除非它被专门终止。分发器不知道节点,因此任何类似的新会话请求都不会转发到该特定节点。

当 Selenium Grid 以独立模式运行时,分发器 URL 指向独立服务器地址。在中心节点模式下,分发器 URL 指向中心服务器地址。

cURL --request DELETE
'https://127.0.0.1:4444/se/grid/distributor/node/<node-id>' 
   --header 'X-REGISTRATION-SECRET: <secret> '

在完全分布式模式下,URL 指向分发器服务器地址。

cURL --request DELETE 
'https://127.0.0.1:5553/se/grid/distributor/node/<node-id>' 
   --header 'X-REGISTRATION-SECRET: <secret>'

如果未完成注册密钥的配置,则必须使用以下命令:

cURL --request DELETE 
'http://<Distributor-URL>/se/grid/distributor/node/<node-id>' 
   --header 'X-REGISTRATION-SECRET;'

在 Selenium Grid 中清空节点

节点清空命令用于以正确的方式执行节点关闭。清空节点表示在所有活动会话完成后结束节点。之后,不再接受其他新的会话请求。

当 Selenium Grid 以独立模式运行时,分发器 URL 指向独立服务器地址。在中心节点模式下,分发器 URL 指向中心服务器地址。

cURL --request POST
'https://127.0.0.1:4444/se/grid/distributor/node/<node-id>/drain' 
   --header 'X-REGISTRATION-SECRET: <secret> '

在完全分布式模式下,URL 指向分发器服务器地址。

cURL --request POST
'https://127.0.0.1:5553/se/grid/distributor/node/<node-id>/drain' 
   --header 'X-REGISTRATION-SECRET: <secret>'

如果未完成注册密钥的配置,则必须使用以下命令:

cURL --request POST 
'http://<Distributor-URL>/se/grid/distributor/node/<node-id>/drain' 
--header 'X-REGISTRATION-SECRET;'

为什么在 Selenium Grid 中使用清空命令

分发器使用节点 ID 将清空命令发送到正确的节点。为了通过直接路由清空节点,使用以下命令:

cURL --request POST 'https://127.0.0.1:5555/se/grid/node/drain' 
   --header 'X-REGISTRATION-SECRET: <secret>'

如果未完成注册密钥的配置,则必须使用以下命令:

cURL --request POST 'http://<node-URL>/se/grid/node/drain' 
   --header 'X-REGISTRATION-SECRET;'

上述命令使用的端点是正确的,并且产生相同的结果。清空会在终止节点之前完成活动会话。

检查 Selenium Grid 中的会话所有者

要检查哪个会话是哪个节点的一部分,可以使用以下 curl 命令:

cURL --request GET 
'https://127.0.0.1:5555/se/grid/node/owner/<session-id>' 
   --header 'X-REGISTRATION-SECRET: <secret>'

如果未完成注册密钥的配置,则必须使用以下命令:

cURL --request GET 
'http://<node-URL>/se/grid/node/owner/<session-id>' 
   --header 'X-REGISTRATION-SECRET;'

如果特定会话指向一个节点,则上述两个命令都将返回 true 值,否则将返回 false。

在 Selenium Grid 中删除会话

当会话被删除时,webdriver 会话结束。此时,驱动程序将被退出,并与活动会话的映射分离。如果使用已删除的会话 ID 处理或重用任何进一步的请求,驱动程序对象将给出错误。删除会话的 curl 命令是:

cURL --request DELETE 
'https://127.0.0.1:5555/se/grid/node/session/<session-id>' 
   --header 'X-REGISTRATION-SECRET: <secret>'

如果未完成注册密钥的配置,则必须使用以下命令:

cURL --request DELETE
'http://<node-URL>/se/grid/node/session/<session-id>' 
   --header 'X-REGISTRATION-SECRET;'

清除 Selenium Grid 中的新会话队列

新会话队列存储新的会话请求。要清除队列,请使用以下 curl 命令。一旦队列被清除,队列中的所有其他请求将不再被接受,并且服务器会向其客户端返回错误响应。

当 Selenium Grid 以独立模式运行时,队列 URL 指向独立服务器地址。在中心节点模式下,队列 URL 指向中心服务器地址。

cURL --request DELETE 
'https://127.0.0.1:4444/se/grid/newsessionqueue/queue' 
   --header 'X-REGISTRATION-SECRET: <secret>'

在正确的分布式模式下,队列 URL 指向新会话队列服务器地址。

cURL --request DELETE
\'https://127.0.0.1:5559/se/grid/newsessionqueue/queue' 
   --header 'X-REGISTRATION-SECRET: <secret>'

如果未完成注册密钥的配置,则必须使用以下命令:

cURL --request DELETE
'http://<URL>/se/grid/newsessionqueue/queue' 
   --header 'X-REGISTRATION-SECRET;'

获取 Selenium Grid 中的新会话请求

新会话请求存储新的会话请求。要获取队列中当前的请求,请使用以下 curl 命令。此命令将产生队列中请求的总数及其有效负载。

当 Selenium Grid 以独立模式运行时,队列 URL 指向独立服务器地址。在中心节点模式下,队列 URL 指向中心服务器地址。

cURL --request GET
 'https://127.0.0.1:4444/se/grid/newsessionqueue/queue'

在正确的分布式模式下,队列 URL 指向新会话队列服务器地址。

cURL --request GET 
'https://127.0.0.1:5559/se/grid/newsessionqueue/queue'

本教程到此结束,我们全面介绍了 Selenium Grid - 端点。我们首先介绍了如何获取 Grid 状态、如何移除节点、什么是清空节点、什么是清空命令、如何检查和删除会话所有者、如何清除新会话队列以及如何在 Selenium Grid 中获取新的会话请求。

本节内容将为您提供深入的Selenium Grid端点知识。建议您持续练习所学内容,并探索与Selenium相关的其他知识,以加深理解并拓宽视野。

广告