无法在网格中启动 Selenium 脚本

unable to Launch Selenium Script in Grid

我已经通过 运行ning 命令启动了 selenium 服务器集线器: java -jar selenium-server-standalone-3.4.jar -port 4444 -role hub

我还通过 运行ning 命令连接了节点:java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://XXX.XXX.XXX.XXX:4444/grid/register/ -browser -browserName=firefox -port 5580

在网格控制台中显示 v:null(不知道为什么?)。

我正在 运行 编写下面的代码到 运行 selenium :

    public static void main(String[]  args) throws MalformedURLException, InterruptedException{

    String URL = "http://www.DemoQA.com";
    String Node = "http://localhost:4444/wd/hub";
    DesiredCapabilities cap = DesiredCapabilities.firefox();
    cap.setBrowserName("firefox");
    cap.setPlatform(Platform.WIN10);


    driver = new RemoteWebDriver(new URL(Node), cap);

    driver.navigate().to(URL);
    Thread.sleep(5000);
    driver.quit();
}

`

gettinf 这些错误,请有人帮忙解决这些问题?

非常感谢 adc

错误消息 Error forwarding the new session cannot find 是网格告诉您无论您请求什么,集线器都找不到支持该功能的任何节点的方式。

在你的情况下,当你这样做时

DesiredCapabilities cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
cap.setPlatform(Platform.WIN10);

您基本上是在告诉集线器您需要一个可以支持名称为 firefox 的浏览器的节点,并且该节点在 Windows 10 操作系统上应该是 运行 .

但是在你的节点启动命令中,你使用了这个

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://XXX.XXX.XXX.XXX:4444/grid/register/ -browser -browserName=firefox -port 5580

这意味着您在 Hub 上注册了一个支持 firefox 浏览器的节点,但您从未提及该平台的任何内容。所以节点假设平台是"any".

现在,当您创建一个新的 RemoteWebDriver 实例时,集线器会尝试将请求的功能与每个节点的可用功能相匹配。由于没有找到任何运行在Windows10 上且支持firefox 的节点(记住你只有一个支持firefox 的节点且未设置其平台),因此匹配失败,因为"ANY" 不是a匹配 "WIN10".

要解决此问题,请删除行 cap.setPlatform(Platform.WIN10); 并重试。

PS : DesiredCapabilities cap = DesiredCapabilities.firefox(); 行已经确定了浏览器名称,因此您无需通过 cap.setBrowserName("firefox");

显式设置浏览器名称

网格控制台显示没有 Firefox 实例是您遇到的问题。您的节点似乎有问题。

检查节点注册命令。

java -jar selenium-server-standalone-3.4.0.jar -role node -hub http://XXX.XXX.XXX.XXX:4444/grid/register/ -browser browserName=firefox,platform=WINDOWS,maxInstances=2

尝试删除命令中 browserName 之前的 -