DesiredCapabilities 'Chrome' > 不适用于 'Selenium Grid'

DesiredCapabilities 'Chrome' > doesn't work with 'Selenium Grid'

DesiredCapabilities 'Chrome' > 不适用于“Selenium Grid”。

  1. 我有一个正确设置的集线器和一个节点
  2. 然而,当试图将 Chrome 浏览器指向其中一个节点时,它不起作用。

当前代码:

        case "chrome":
            if (null == webdriver) {
                System.setProperty("webdriver.chrome.driver", Constant.CHROME_DRIVER_DIRECTORY);
                DesiredCapabilities capability = DesiredCapabilities.chrome();
                capability.setBrowserName("chrome");
                capability.setVersion("55.0.2883.87 m");
                capability.setPlatform(Platform.WINDOWS);
                webdriver = new RemoteWebDriver(new URL("http://172.16.1.48:5555/wd/hub"),capability);

            }
            break;

异常: org.openqa.selenium.SessionNotCreatedException: 无法创建新的远程会话。所需功能 = 功能 [{browserName=chrome, version=55.0.2883.87 m, platform=WINDOWS}], 所需功能 = 功能 [{}]

两件事:

  • 在节点端,请确保 chromedriver (for chrome browser), geckodriver(for firefox browser) and IEDriverServer(for IE) 都在 PATH 变量中可用并且可以通过打开命令提示符并键入它们的名称来调用。
  • 当您执行 DesiredCapabilities capability = DesiredCapabilities.chrome(); 时,它会自动适当地设置浏览器名称。所以你不需要通过 capability.setBrowserName("chrome"); 再次设置它(所以你可以将其删除)。
  • 除非并且直到您通过 nodeConfig json 文件明确设置了节点级别的浏览器版本,否则请删除 capability.setVersion("55.0.2883.87 m");,因为这会导致您的测试要求可以支持 chrome 55 版本,但是如果您没有在您的节点上指定相同的版本控制,您的网格将拒绝您的新会话请求,声明它无法找到所需的所需功能。
  • 根据您的屏幕截图,您的集线器似乎是 运行 在 localhost 上侦听端口 4444 但您的代码显示好像您正在尝试直接连接到节点.所以请将 webdriver = new RemoteWebDriver(new URL("http://172.16.1.48:5555/wd/hub"),capability); 更改为 `webdriver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),capability);

处理完这些项目后,您的问题应该会得到解决。