Selenium webdriver 使用selenium grid和Webdriver manager后出现功能错误

Selenium webdriver 使用selenium grid和Webdriver manager后出现功能错误,selenium-webdriver,selenium-chromedriver,selenium-grid,webdrivermanager-java,Selenium Webdriver,Selenium Chromedriver,Selenium Grid,Webdrivermanager Java,我一直在使用[webdriver manager][1]进行本地执行,它非常出色,但是现在我正在尝试使用selenium网格,我希望使用相同的方法,但是我遇到了一些与功能相关的错误 集线器和节点是本地主机,以下是我的实现的详细信息: 我用这条线开始了集线器: start cmd /k java -jar selenium-server-standalone-3.5.0.jar -role hub -port 4443 我用这一行开始节点 start cmd /k java -j

我一直在使用[webdriver manager][1]进行本地执行,它非常出色,但是现在我正在尝试使用selenium网格,我希望使用相同的方法,但是我遇到了一些与功能相关的错误

集线器和节点是本地主机,以下是我的实现的详细信息:

我用这条线开始了集线器:

    start cmd /k java -jar selenium-server-standalone-3.5.0.jar -role hub -port 4443
我用这一行开始节点

    start cmd /k java -jar selenium-server-standalone-3.5.0.jar -port 5556 -role node -hub http://localhost:4443/grid/register 
这是我用于浏览器的配置,问题在于chrome,我还没有测试其他浏览器

public WebDriver cbt(String browser,  String methodName) throws Exception{
        WebDriver driver;
        DesiredCapabilities caps;

        //Check if parameter passed from TestNG is 'firefox'
        if(browser.equalsIgnoreCase("firefox"))
        {
            caps = DesiredCapabilities.firefox();
            caps.setCapability("platform", "Windows 10");
            caps.setCapability("version", "53.0");
            caps.setCapability("name", methodName);

        }

        //Check if parameter passed as 'chrome'

        else if(browser.equalsIgnoreCase("chrome"))
        {
             caps = DesiredCapabilities.chrome();

        }

        else if(browser.equalsIgnoreCase("ie")){

            caps = DesiredCapabilities.edge();
            caps.setCapability("platform", "Windows 10");
            caps.setCapability("version", "14.14393");
            caps.setCapability("name", methodName);


        }

        else{

            //If no browser passed throw exception

            throw new Exception("Browser is not correct");

        }
        String hub = "http://localhost:4443/wd/hub";
        driver = new RemoteWebDriver(new URL(hub), caps);
        return driver;
    }
这些是我得到的错误

     org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{browserName=chrome, version=, platform=ANY}], required capabilities = Capabilities [{}]

    Build info: version: '3.3.1', revision: '5234b325d5', time: '2017-03-10 09:10:29 +0000'
    System info: host: 'NEYMAR', ip: '169.254.112.118', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_45'
    Driver info: driver.version: RemoteWebDriver
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:158)
        at com.gnow.gnow.Utils.CommonConfiguration.cbt(CommonConfiguration.java:213)
        at com.gnow.gnow.Test.Test.setUp(Test.java:69)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
        at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:515)
        at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:217)
        at org.testng.internal.Invoker.invokeMethod(Invoker.java:590)
        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
        at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
        at org.testng.TestRunner.privateRun(TestRunner.java:756)
        at org.testng.TestRunner.run(TestRunner.java:610)
        at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
        at org.testng.SuiteRunner.run(SuiteRunner.java:289)
        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
        at org.testng.TestNG.runSuites(TestNG.java:1133)
        at org.testng.TestNG.run(TestNG.java:1104)
        at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
        at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)

我建议的第一件事是将selenium版本升级到

Selenium 3.3.1中存在一个bug,其中实际错误不会传递给最终用户,而您的stacktrace似乎表明这可能是由于该bug,这就是您无法看到真正问题的原因。此错误在3.4.0中修复

在客户端升级到Selenium 3.5.1后,您应该立即看到问题

既然您提到了
Chrome
,我猜这可能是因为您的chromedriver在
路径中不可用


您可能想看看我在网格上编写的教程,它告诉您启动和运行网格所需的一组内容。我已经在中包含了很多关于网格的其他信息。

我建议您首先将selenium版本升级到

Selenium 3.3.1中存在一个bug,其中实际错误不会传递给最终用户,而您的stacktrace似乎表明这可能是由于该bug,这就是您无法看到真正问题的原因。此错误在3.4.0中修复

在客户端升级到Selenium 3.5.1后,您应该立即看到问题

既然您提到了
Chrome
,我猜这可能是因为您的chromedriver在
路径中不可用


您可能想看看我在网格上编写的教程,它告诉您启动和运行网格所需的一组内容。我也在中包含了许多关于网格的其他信息。

你说得对,谢谢!我更新了那个版本,然后又出现了另一个错误,我将检查它org.openqa.selenium.webdrivexception:无法解析远程响应:错误500服务器错误HTTP错误500访问/wd/hub/session时出现问题。原因:服务器错误

由:java.lang引起。NullPointerException@axcha15-如果我的回答对你有帮助,你能接受吗?对于你的错误,你可能想先搜索一遍,如果你还没有找到问题,你可以创建一个新问题。@KrishnanMahadevan我浏览了你的文章,学到了很多东西。不过我有一个疑问。当我们使用SeleniumGrid时,是否有一种方法可以使用WebDriverManager自动配置浏览器驱动程序二进制文件?@Potatoツ 不,你不能那样做。WebDriverManager在客户端工作,而不是在远程机器端(在网格中也是如此)您是对的,谢谢!我更新了那个版本,然后又出现了另一个错误,我将检查它org.openqa.selenium.webdrivexception:无法解析远程响应:错误500服务器错误HTTP错误500访问/wd/hub/session时出现问题。原因:服务器错误

由:java.lang引起。NullPointerException@axcha15-如果我的回答对你有帮助,你能接受吗?对于你的错误,你可能想先搜索一遍,如果你还没有找到问题,你可以创建一个新问题。@KrishnanMahadevan我浏览了你的文章,学到了很多东西。不过我有一个疑问。当我们使用SeleniumGrid时,是否有一种方法可以使用WebDriverManager自动配置浏览器驱动程序二进制文件?@Potatoツ 不,你不能那样做。WebDriverManager在客户端工作,而不是在远程机器端工作(在网格的情况下也是如此)
  [1]: https://github.com/bonigarcia/webdrivermanager