Selenium Grid 4如何指定特定节点运行测试脚本
如何在Selenium Grid 4中指定特定节点运行测试
针对你的场景(两个同版本Chrome的Windows节点),完全可以通过指定节点名称或其他标识来固定测试运行的节点,以下是具体实现方法:
方法1:通过节点名称指定(最直接)
首先需要在启动Node时为每个节点设置唯一名称,然后在测试代码中通过se:nodeName能力指定目标节点。
步骤1:启动带名称的Node
启动Node A时添加--node-name参数:
java -jar selenium-server-4.x.x.jar node --hub http://<Hub的IP>:4444 --node-name "NodeA" --port 5555
启动Node B时同理设置为--node-name "NodeB"。
步骤2:测试代码中指定节点名称
Java示例:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.RemoteWebDriver; import java.net.URL; public class SpecificNodeTest { public static void main(String[] args) throws Exception { ChromeOptions options = new ChromeOptions(); // 指定要运行的节点名称 options.setCapability("se:nodeName", "NodeA"); WebDriver driver = new RemoteWebDriver(new URL("http://<Hub的IP>:4444"), options); driver.get("https://www.example.com"); // 执行测试逻辑 driver.quit(); } }
Python示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 指定目标节点名称 options.set_capability("se:nodeName", "NodeA") driver = webdriver.Remote( command_executor='http://<Hub的IP>:4444/wd/hub', options=options ) driver.get("https://www.example.com") # 测试逻辑 driver.quit()
方法2:通过自定义标签指定
如果需要更灵活的分组管理,可以给节点添加自定义标签,再通过标签筛选节点。
步骤1:启动带自定义标签的Node
启动Node A时添加--labels参数:
java -jar selenium-server-4.x.x.jar node --hub http://<Hub的IP>:4444 --labels "group=test-node-A,region=internal" --port 5555
步骤2:测试代码中指定标签
在测试代码的能力中添加对应的标签键值对:
// Java示例 options.setCapability("group", "test-node-A");
# Python示例 options.set_capability("group", "test-node-A")
方法3:通过节点IP指定
如果节点名称可能变动,也可以直接通过节点的IP地址指定,使用se:host能力:
options.setCapability("se:host", "192.168.1.1");
options.set_capability("se:host", "192.168.1.1");
注意事项
- Selenium Grid默认会根据负载均衡策略(如LeastSession)分配空闲节点,因此必须显式添加节点标识的能力参数,才能固定到特定节点。
- 确保节点名称、标签或IP在Grid中唯一,避免匹配到多个节点。
内容的提问来源于stack exchange,提问作者340- Surwade Ajay Mukund
相关产品推荐
相关产品推荐

