在[Selenium Grid 版本 3 之前,只有 Hub 和 Node(s)。尽管这在 Selenium 4 中仍受支持,但它现在支持另外两种类型的 Grid。
- 以下是 Selenium 4的支持:
支持的三种网格类型:
- 独立模式
- 经典网格(Hub 和 Node,如早期版本)
- 完全分布式(路由器、分发器、会话和节点)
支持四个独立的进程——路由器、会话映射、分发器和节点。
- 路由器——监听新的会话请求。
- Distributor – 选择应该执行测试的适当节点。
- 会话映射——将会话 ID 映射到节点。
- 节点- 进行测试执行的测试机器。
以下是在Selenium Grid 4的完全分布式变体上作为跨浏览器测试的一部分执行的详细步骤列表:
** 第 1 步 **——第一步是启动会话映射,它主要负责将会话 ID 映射到运行会话的相应节点。
java -jar selenium-server-4.2.2.jar sessions
创建新会话时,会话 ID 和节点 URI(统一资源标识符)的组合存储在会话映射中。
第 2 步– 下一步是开始分发进程。当 Selenium 客户端有请求创建 Sessions 请求时,Distributor 负责分配适当的节点。
java -jar selenium-server-4.2.2.jar distributor --sessions http://localhost:5556
第 3 步– 路由器是通常暴露在网络上的路由器。路由器在http://localhost:4444上监听新的 Session 请求。
客户端请求被发送到路由器,并根据请求类型选择适当的路径。创建新会话的传入请求被重定向到路由器进程。
java -jar selenium-server-4.0.0-alpha-2.jar router --sessions http://localhost:5556 --distributor http://localhost:5553
所有其他类型的请求在使用 Session ID 从 Sessions 映射中查询节点 URI 后,根据请求发送到节点。
第 4 步– 如果没有节点,网格将毫无用处。各个浏览器的 Selenium WebDrivers 放在 Grid 4 jar 文件所在的同一目录中。
–detect-drivers 选项用于自动识别系统中存在的 Selenium WebDrivers。
java -jar selenium-server-4.0.0-alpha-2.jar node --detect-drivers
在分发服务器下创建节点时,会在会话映射中更新节点的详细信息以及节点 URI。在下面显示的屏幕截图中,节点 URI 是 5555。
第 5 步– Selenium WebDriver 发起远程会话的请求被发送到路由器。
public void testSetUp() throws MalformedURLException {
String Node = "http://localhost:4444";
DesiredCapabilities caps = new DesiredCapabilities();
caps.setBrowserName("chrome");
/* The execution happens on the Selenium Grid with the address mentioned earlier */
driver = new RemoteWebDriver(new URL(Node), caps);
}
curl 命令http://localhost:4444/status
用于检查调用的状态,以及检查会话是否建立。
一旦在节点下建立会话,会话 ID 就会在相应节点的会话映射中更新。如步骤 (3) 所述,这有助于路由器进程识别节点,以便其他“匹配”客户端请求可以直接发送到该节点。
第 6 步– 会话创建调用由路由器转移到分发器,所有其他类型的请求直接从路由器发送到节点。
在早期版本的 Selenium Grid 中,这些过程发生在 Hub 内部,因此使用该版本的 Selenium Grid 的开发人员和测试人员并不完全了解内部结构。Selenium Grid 4 的更新架构使调试和故障排除过程更容易,这反过来又使 Selenium 测试自动化更加无缝。