我正在运行以下内容但收到错误
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)
有人可以帮忙吗
答案 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
不兼容。
解决方案如下:
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)中分离出来。