Selenium Grid:org.openqa.selenium.WebDriverException:转发新会话时出错用于设置功能的 VM 池为空

2024-03-04

我正在尝试使用 Cucumber 在硒网格上进行 POC。我收到此错误: 转发新会话时出错 用于设置功能的虚拟机池为空

这是我的示例代码:

公共静态无效configureServer(){

    GridHubConfiguration gridHubConfig = new GridHubConfiguration();
    //gridHubConfig.role = "hub";
    gridHubConfig.host = "127.0.0.1";
    gridHubConfig.port = 4444;
    gridHubConfig.newSessionWaitTimeout = 150000;
    Hub myHub = new Hub(gridHubConfig);
    myHub.start();

    GridNodeConfiguration gridNodeConfig = new GridNodeConfiguration();
    gridNodeConfig.hub = "http://127.0.0.1:4444/grid/register";
    gridNodeConfig.host = "xxxx"; //my ip address
    gridNodeConfig.port = 5566;
    gridNodeConfig.role = "webdriver";
    RegistrationRequest req = RegistrationRequest.build(gridNodeConfig);
    req.getConfiguration();
    req.validate();
    RegistrationRequest.build(gridNodeConfig);

    SelfRegisteringRemote remote = new SelfRegisteringRemote(req);
    remote.setRemoteServer(new SeleniumServer(gridNodeConfig));
    remote.startRemoteServer();
    remote.startRegistrationProcess();

    System.out.println("Node Registered to Hub..............");
}

能力:

        capabilities.setBrowserName("chrome");
        capabilities.setPlatform(Platform.MOJAVE);
        capabilities.setVersion("91.0.4472.114");
        capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

驱动程序初始化:

            HubNodeConfiguration.configureServer();
            System.setProperty("webdriver.chrome.driver","xxx/chromedriver");
            threadLocalDriver.set(new RemoteWebDriver(new URL("http://localhost:9090 
            /wd/hub"),capabilities));
             

已尝试并遵循此处提供的答案(Selenium Grid +转发新会话时出错 用于设置功能的虚拟机池为空 https://stackoverflow.com/questions/34217563/selenium-grid-error-forwarding-the-new-session-empty-pool-of-vm-for-setup-capab)但运气不好

详细代码请参考我的Git Repo:https://github.com/rkhanna1401/cucumber_selenium_grid https://github.com/rkhanna1401/cucumber_selenium_grid


您的代码存在多个问题。简而言之,您仅在用于创建 WebDriver 的所需功能对象中硬编码了许多操作系统平台信息,但 Grid Hub 没有进行这些更改。

我还注意到您的代码库正在尝试与在不同端口中运行的集线器进行通信,但您的集线器正在不同的端口中运行。

我还注意到您的测试代码没有等待节点注册到集线器。我有一个快速黑客添加了一个睡眠来促进这一点,但是您可以采用复杂的机制,例如轮询集线器以查看节点是否已注册等,

您需要使用以下 git diff 内容创建一个补丁文件,然后可以将其应用到您的代码库。

这是一个 git diff,您可以将其应用于您的项目来解决问题

From 7d718cea160e7feac2fab8526f8578553d697426 Mon Sep 17 00:00:00 2001
From: Krishnan Mahadevan <Krishnan.Mahadevan>
Date: Sat, 26 Jun 2021 19:46:33 +0530
Subject: [PATCH] Changes needed

---
 .../java/WebdriverBase/GridDriverManager.java     | 15 +++++----------
 .../java/WebdriverBase/HubNodeConfiguration.java  | 12 +++++++++---
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/main/java/WebdriverBase/GridDriverManager.java b/src/main/java/WebdriverBase/GridDriverManager.java
index 58a8052..4102ac3 100644
--- a/src/main/java/WebdriverBase/GridDriverManager.java
+++ b/src/main/java/WebdriverBase/GridDriverManager.java
@@ -96,7 +96,7 @@ public class GridDriverManager {
        }
        if (browserType.equalsIgnoreCase("Chrome")) {
            try {
-               System.setProperty("webdriver.chrome.driver","/Users/rishikhanna/Documents/cucumber/shopping/Driver/chromedriver");
+//             System.setProperty("webdriver.chrome.driver","/Users/rishikhanna/Documents/cucumber/shopping/Driver/chromedriver");
            } catch (Exception e) {
                e.printStackTrace();
            }
@@ -112,9 +112,8 @@ public class GridDriverManager {
 //            chromePrefs.put("profile.default_content_settings.popups", 0);
 //            ChromeOptions options = new ChromeOptions();
 //            options.setExperimentalOption("prefs", chromePrefs);
-            capabilities.setBrowserName("chrome");
-            capabilities.setPlatform(Platform.MOJAVE);
-            capabilities.setVersion("91.0.4472.114");
+
+            capabilities.merge(DesiredCapabilities.chrome());
             capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
           //  capabilities.setCapability(ChromeOptions.CAPABILITY, options);
        }
@@ -130,9 +129,6 @@ public class GridDriverManager {
        if (platformType.equalsIgnoreCase("WINDOWS")) {
            capabilities.setPlatform(Platform.WINDOWS);
        }
-       if (platformType.equalsIgnoreCase("MAC")) {
-           capabilities.setPlatform(Platform.MOJAVE);
-       }
 
        //capabilities.setVersion(getValFromJson(jsonObject,"version"));
        return capabilities;
@@ -149,7 +145,7 @@ public class GridDriverManager {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
-       setDriver("chrome", "WINDOWS");
+       setDriver("chrome", "MAC");
        return threadLocalDriver.get();
    }
 
@@ -159,8 +155,7 @@ public class GridDriverManager {
        {
            try {
                HubNodeConfiguration.configureServer();
-               System.setProperty("webdriver.chrome.driver","/Users/rishikhanna/Documents/cucumber/shopping/Driver/chromedriver");
-               threadLocalDriver.set(new RemoteWebDriver(new URL("http://localhost:9090/wd/hub"),capabilities));
+               threadLocalDriver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),capabilities));
                threadLocalDriver.get().manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
            } catch (MalformedURLException e) {
                e.printStackTrace();
diff --git a/src/main/java/WebdriverBase/HubNodeConfiguration.java b/src/main/java/WebdriverBase/HubNodeConfiguration.java
index 174b216..2725bba 100644
--- a/src/main/java/WebdriverBase/HubNodeConfiguration.java
+++ b/src/main/java/WebdriverBase/HubNodeConfiguration.java
@@ -4,6 +4,7 @@ import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
 
+import java.util.concurrent.TimeUnit;
 import org.openqa.grid.common.GridRole;
 import org.openqa.grid.common.RegistrationRequest;
 import org.openqa.grid.internal.utils.SelfRegisteringRemote;
@@ -30,10 +31,10 @@ public class HubNodeConfiguration {
        myHub.start();
 
        GridNodeConfiguration gridNodeConfig = new GridNodeConfiguration();
-       gridNodeConfig.hub = "http://127.0.0.1:4444/grid/register";
-       gridNodeConfig.host = "xxxx"; //my ip address
+       gridNodeConfig.hub = "http://localhost:4444";
+       gridNodeConfig.host = "localhost"; //my ip address
        gridNodeConfig.port = 5566;
-       gridNodeConfig.role = "webdriver";
+       gridNodeConfig.role = "node";
        RegistrationRequest req = RegistrationRequest.build(gridNodeConfig);
        req.getConfiguration();
        req.validate();
@@ -44,6 +45,11 @@ public class HubNodeConfiguration {
        remote.startRemoteServer();
        remote.startRegistrationProcess();
 
+       try {
+           TimeUnit.SECONDS.sleep(10);
+       } catch (InterruptedException e) {
+           e.printStackTrace();
+       }
        System.out.println("Node Registered to Hub..............");
    }
 }
-- 
2.24.3 (Apple Git-128)+GitX
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium Grid:org.openqa.selenium.WebDriverException:转发新会话时出错用于设置功能的 VM 池为空 的相关文章

随机推荐

  • 批量使用 PowerShell 命令的问题

    我使用 PowerShell 命令从云下载 zip 文件 该命令在 PowerShell 和命令行中都能正常工作 但是 如果我将命令行中的命令插入批处理脚本中 则只会下载 html 为什么该命令在命令行中可以正常工作 但在批处理文件中却不能
  • GET 文件上传如何工作?

    有谁知道怎么办GWT文件上传有效吗 我知道关于FileUpload小部件以及如何使用它 我想知道它的内在机制是什么 我们无法从中获取文件内容FileUpload客户端中的小部件以及它如何发送到服务器 我用谷歌搜索但没有得到解决方案 提前致谢
  • 仅当活动未显示时才显示通知

    我有一个想要处理的后台任务 问题是 当任务完成时 我想调用一个新的 Activity 来向用户显示结果 前提是我的主 Activity 正在显示 否则我只想发送一个通知 以便用户可以看到该操作已完成 并且可以随时打开它 我正在考虑使用一个服
  • 强制从 s3 亚马逊服务器下载

    我一直在开发一个新的网络应用程序 它依赖于亚马逊S3服务器作为存储系统 以及代码点火器作为 PHP 框架 我需要在单击链接时强制下载文件 原始网址如下所示 http www our web com download do 1 jpg 它会生
  • 主构造函数内的 Scala 局部变量

    在 Scala 中如何在主构造函数中定义局部变量 我需要解决这个练习Scala for the impatient book 编写一个具有接受字符串的主构造函数的 Person 类 包含名字 空格和姓氏 例如 new 人 弗雷德 史密斯 提
  • Kafka 主题分区

    关于 Kafka 主题和分区的一个简单问题 假设以下场景 Producer1将数据写入Topic1 Producer2向Topic2写入数据 Consumer读取Topic 1和Topic 2的数据 Consumer2仅从Topic2读取数
  • S 的最长平衡子序列

    给出的问题 一串括号据说是 如果字符串中的左括号和右括号可以正确配对 则为平衡 例如 字符串 和 都是平衡的 而字符串 则不是 均衡 给定一个字符串S长度n由括号组成 假设你想找到最长的子序列S这是平衡的 使用动态规划 设计一个算法来找到最
  • 从 Resteasy 服务器返回文件

    你好 我想从 Resteasy 服务器返回一个文件 为此 我在客户端有一个链接 它使用 ajax 调用休息服务 我想在其余服务中返回文件 我尝试了这两段代码 但都没有按照我想要的方式工作 POST Path exportContacts p
  • 仅加载关系的 id(pluck)

    我有一个简单的应用程序 使用 Laravel 5 5 13 public function index return Pet all 这列出了所有宠物 我有多对多关系 其中许多用户可以拥有同一只宠物 宠物的人类家庭 我想加载这些用户 Doi
  • 文件夹如何工作?

    谁能解释一下怎么做foldr http haskell org ghc docs latest html libraries base Prelude html v foldr work 举这些例子 Prelude gt foldr 54
  • 如何在phar文件代码中获取.phar文件真实目录?

    我正在尝试创建一个php可执行文件 phar文件 来生成一些文件 我想知道如何获取phar文件的真实路径 在phar文件代码内 我想要做的是在phar文件的同一级别创建一个文件夹并在那里创建新文件 但是realpath DIR 似乎不起作用
  • Git:“工作树”到底是什么?与“工作目录”相同吗?

    我正在阅读大量有关 Git 的文档 最近我一直在寻找 工作树 概念 但我不明白 工作树 到底是什么 我找到了这样的描述 什么是工作树 https mijingo com blog what is the working tree in gi
  • 在 ActionScript 2.0 中按程序访问函数的参数列表

    我已经可以通过执行类似以下操作来获取类中的所有函数 for var member in obj if obj member instanceof Function var f Function obj member 有没有办法在动作脚本中获
  • Haskell、Lisp 和冗长[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 生产中的 Azure SDK 2.2:无法加载文件或程序集“msshrtmi”或其依赖项之一。该系统找不到指定的文件

    我在 StackOverflow 和其他网站上的其他几个线程中读到过有关此问题的信息 其他解决方案都没有解决我的问题 而且大多数都已经过时 引用了旧版本的 Azure SDK 我有一个部署到 Azure 的典型 Azure 网站角色 该角色
  • Postgrex.Error ERROR 42501 unavailable_privilege 无法创建扩展 citext

    我正在尝试创建迁移 这是输出 MIX ENV prod DATABASE URL URL mix ecto migrate info execute CREATE EXTENSION citext Postgrex Error ERROR
  • Firebase 快照顺序错误

    我尝试将存储在 firebase 上的帖子加载到我的 tableView 中 我使用 childAdded 函数按照发布的顺序 从第一个到最后一个 获取帖子 起初它似乎有效 但现在不再有效 我不知道为什么 因此 我在帖子中添加了时间戳并使用
  • 弯曲等高列,但尊重另一列的最大高度[重复]

    这个问题在这里已经有答案了 我如何使下面的代码仅使用CSS flex 而不使用Javascript 第二列有动态内容列表 我需要根据第一列的高度应用滚动条 HTML div class row d flex div class col lg
  • 是否存在类似于 Nonetype 路径的东西?

    在我的课程中 我喜欢用 None 来启动我的路径变量 如果我使用os path很容易与其他路径进行比较 但我更喜欢pathlib风格 有没有解决方案可以做到这一点 import os path1 os path dirname D test
  • Selenium Grid:org.openqa.selenium.WebDriverException:转发新会话时出错用于设置功能的 VM 池为空

    我正在尝试使用 Cucumber 在硒网格上进行 POC 我收到此错误 转发新会话时出错 用于设置功能的虚拟机池为空 这是我的示例代码 公共静态无效configureServer GridHubConfiguration gridHubCo