首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >硒网格中特定节点的力自动控制

硒网格中特定节点的力自动控制
EN

Stack Overflow用户
提问于 2018-01-08 07:50:41
回答 1查看 2K关注 0票数 0

我们在我们的办公环境中设置了Selenium网格,用于web自动化&出于某些测试目的,用户可能希望强制在4个活动节点中的节点3上的Chrome浏览器上实现自动化。稍后,用户可以决定在节点2上强制Chrome自动化,也许有一天会这样。

有办法迫使这种情况发生吗?我正在查看nodeconfig.json文件格式&我无法找到一个参数来帮助我向节点提供唯一的标识。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 04:14:30

这是非常有可能的。这是你怎么做的。

首先,您需要通过节点配置向节点添加标签。

有关此节点配置的模板,可以参考selenium代码库这里中的模板。

下面是一个包含标签的示例节点配置文件:

代码语言:javascript
运行
复制
{
    "capabilities": [
        {
            "browserName": "chrome",
            "applicationName":"hercules",
            "maxInstances": 10,
            "seleniumProtocol": "WebDriver"
        }
    ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 10
}

因此,在这里,我们添加了一个标签到铬浏览器,并称之为“大力神”。这可以是任何东西,但关键始终必须是applicationName

现在,通过命令行-nodeConfig传入此节点配置文件来启动节点。有关此问题的详细信息,请参阅我的网格教程这里

现在实例化RemoteWebDriver实例,如下所示:

代码语言:javascript
运行
复制
DesiredCapabilities caps = DesiredCapabilities.chrome();
String whichNode = System.getProperty("nodeName", "");
if (!whichNode.trim().isEmpty()) {
    caps.setCapability("applicationName", whichNode);
}

RemoteWebDriver driver = new RemoteWebDriver(gridUrl, caps);

如您所见,如果您通过JVM参数applicationName指定了一些内容,那么我们将设置相同的键,即-DnodeName,并传入一个值。如果您没有通过任何测试,测试将使用默认逻辑进行路由。如果传入应用程序名称,则会将其路由到与应用程序名称匹配的节点。

以上所述并不要求您更改selenium网格中的任何内容,您可以按原样使用所有内容。

但是,如果您想要更复杂的东西,那么您可以构建自己的自定义功能匹配器,在集线器的末尾注入它,然后在客户端使用适当的功能(如上面的示例代码所示)。

我写了一篇关于这件事的详细博文。有关更多细节,您可以参考这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48146173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档