Google chrome Selenium网格中特定节点上的强制自动化

Google chrome Selenium网格中特定节点上的强制自动化,google-chrome,nodes,selenium-grid,node-config,Google Chrome,Nodes,Selenium Grid,Node Config,我们在办公环境中为web自动化设置了Selenium网格&出于某些测试目的,用户可能希望强制在4个活动节点中的节点3上的Chrome浏览器上实现自动化。稍后,用户可以决定强制节点2上的Chrome自动化,也许改天吧 有没有办法迫使这一切发生?我正在研究nodeconfig.json文件格式&我没有找到一个参数可以帮助我为节点指定唯一标识。这是非常可能的。这是你怎么做的 首先,需要通过节点配置向节点添加标签 有关此节点配置的模板,可以参考selenium代码库中的模板 下面是一个包含标签的示例节点

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


有没有办法迫使这一切发生?我正在研究nodeconfig.json文件格式&我没有找到一个参数可以帮助我为节点指定唯一标识。

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

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

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

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

{
    "capabilities": [
        {
            "browserName": "chrome",
            "applicationName":"hercules",
            "maxInstances": 10,
            "seleniumProtocol": "WebDriver"
        }
    ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 10
}
因此,我们在chrome浏览器中添加了一个标签,并将其命名为“hercules”。这可以是任何内容,但密钥始终必须是applicationName

现在,您可以通过命令行
-nodeConfig
传入此节点配置文件来启动节点。有关这方面的更多详细信息,请参阅我的网格教程

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

DesiredCapabilities=DesiredCapabilities.chrome();
字符串,其中node=System.getProperty(“nodeName”,即“”);
如果(!whichNode.trim().isEmpty()){
caps.setCapability(“applicationName”,whichNode);
}
RemoteWebDriver=新的RemoteWebDriver(gridUrl,caps);
如您所见,如果您通过JVM参数
-DnodeName
指定了某个内容,我们将设置相同的键,即,
applicationName
,并传入一个值。如果您没有通过任何测试,测试将使用默认逻辑进行路由。如果传入应用程序名,则会将其路由到与应用程序名匹配的节点

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

但是如果您想要更复杂的东西,那么您可以通过构建自己的定制功能匹配器来实现,您可以在中心端注入该匹配器,然后在客户端使用适当的功能(如上面的示例代码所示)


我写了一篇关于这件事的详细博文。您可以参考它了解更多详细信息。

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

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

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

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

{
    "capabilities": [
        {
            "browserName": "chrome",
            "applicationName":"hercules",
            "maxInstances": 10,
            "seleniumProtocol": "WebDriver"
        }
    ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 10
}
因此,我们在chrome浏览器中添加了一个标签,并将其命名为“hercules”。这可以是任何内容,但密钥始终必须是applicationName

现在,您可以通过命令行
-nodeConfig
传入此节点配置文件来启动节点。有关这方面的更多详细信息,请参阅我的网格教程

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

DesiredCapabilities=DesiredCapabilities.chrome();
字符串,其中node=System.getProperty(“nodeName”,即“”);
如果(!whichNode.trim().isEmpty()){
caps.setCapability(“applicationName”,whichNode);
}
RemoteWebDriver=新的RemoteWebDriver(gridUrl,caps);
如您所见,如果您通过JVM参数
-DnodeName
指定了某个内容,我们将设置相同的键,即,
applicationName
,并传入一个值。如果您没有通过任何测试,测试将使用默认逻辑进行路由。如果传入应用程序名,则会将其路由到与应用程序名匹配的节点

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

但是如果您想要更复杂的东西,那么您可以通过构建自己的定制功能匹配器来实现,您可以在中心端注入该匹配器,然后在客户端使用适当的功能(如上面的示例代码所示)

我写了一篇关于这件事的详细博文。你可以参考它了解更多细节