运行selenium remotedriver

时间:2018-01-02 21:37:29

标签: java selenium selenium-webdriver selenium-chromedriver selenium-grid

我正在运行以下内容但收到错误

public class base
{
    public static WebDriver driver;

    public static void main(String[]  args) throws MalformedURLException, InterruptedException
    {
        System.setProperty("webdriver.chrome.driver", "C:\\code\\lib\\browser drivers\\chromedriver.exe");

        String URL = "http://www.google.com";
        String Node = "http://localhost:4444/wd/hub";
        DesiredCapabilities cap = DesiredCapabilities.chrome();
        cap = DesiredCapabilities.chrome();
        cap.setPlatform(org.openqa.selenium.Platform.WINDOWS);


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

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

显示的错误如下:

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z'
System info: host: 'RAJESHW10', ip: '169.254.3.253', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91'
Driver info: driver.version: unknown
Command duration or timeout: 316 milliseconds
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

有人可以帮忙吗

2 个答案:

答案 0 :(得分:0)

错误确实给了我们一个关于出错的提示,如下所示:

  • Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService 无法创建新服务:ChromeDriverService ,表示新会话未启动。
  • Driver info: driver.version: unknown driver.version:未知表示根本未调用 chromedriver 二进制文件。
  • at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance0(原生方法),其源于以下任何一种情况:

    java.lang.RuntimeException: exception in constructor :此异常的发生对于反射而言是唯一的。通常,编写忽略已检查异常的代码是不可能的,因为它根本不会编译。

    java.lang.reflect.InvocationTargetException :如果抛出InvocationTargetException,则意味着调用了该方法。此异常并不表示反射包或其用法存在问题。

    java.lang.IllegalArgumentException :如果构造函数传递了错误类型的参数,则抛出IllegalArgumentException

结论

从上述提示中可以清楚地看到 Selenium-Java 客户端的版本, JDK {{1} 二进制和 ChromeDriver 不兼容。

解决方案

解决方案如下:

  • 使用最新版本( JDK 8u152 )更新 Chrome
  • 使用最新版本更新 JDK 客户端( Selenium-Java v3.8.1
  • 使用最新版本更新 Selenium-Java 二进制文件( ChromeDriver v2.34
  • 使用最新版本更新 ChromeDriver 二进制文件( Chrome v63.0

答案 1 :(得分:0)

请执行以下操作并重试。

确保路径C:\\code\\lib\\browser drivers\\chromedriver.exe已添加到运行节点的计算机上的%PATH%变量中。这将确保硒uber jar可以找到chromedriver二进制文件的位置。

  

System.setProperty(“webdriver.chrome.driver”,“C:\ code \ lib \ browser drivers \ chromedriver.exe”);

此机制只应在您执行

时使用

ChromeDriver driver = ChromeDriver()

由于您正在使用selenium网格,因此您在此处理多个JVM。

System.setProperty()将仅影响当前的JVM(在本例中是您的测试),但实际的浏览器会在另一个JVM(运行selenium节点的JVM)中分离出来。