我写了这样的代码,但是这段代码没有运行chromedriver,我已经用这条路径添加了文件(chromedriver.exe)(\ chromedrive \ chromedriver.exe)。
public class Browser {
private static WebDriver driver = new ChromeDriver();
public static WebDriver driver() {
return driver;
}
public static void open(String url) {
String path = System.getProperty("user.dir");
System.setProperty("webdriver.chrome.driver",path + "\\chromedrive\\chromedriver.exe");
driver.manage().window().maximize();
driver.get(url);
}
}
public class Page extends LoadableComponent<Page> {
static String url = "http://-------";
private static String title = "title";
public Page() {
PageFactory.initElements(Browser.driver(), this);
}
@Override
protected void load() {
// TODO Auto-generated method stub
Browser.open(url);
}
@Override
protected void isLoaded() throws Error {
// TODO Auto-generated method stub
assertTrue(Browser.driver().getTitle().equals(title));
}
}
public class PageTests {
@Test
public void pageTest() {
Page page = new Page();
page.get();
}
}
错误消息是:
java.lang.ExceptionInInitializerError
引起:java.lang.IllegalStateException:驱动程序的路径 必须由webdriver.chrome.driver系统属性设置可执行文件;
答案 0 :(得分:2)
最初我认为你正在创建Chromedriver,而没有引用那里的exe。
因此,如果你把它改成这样的东西,那么它可能会起作用。
public class Browser {
private static WebDriver driver;
public static WebDriver driver() {
return driver;
}
public static void open(String url) {
String path = System.getProperty("user.dir");
System.setProperty("webdriver.chrome.driver",path + "\\chromedrive\\chromedriver.exe");
driver = new ChromeDriver(); //Initilize here
driver.manage().window().maximize();
driver.get(url);
}
}
答案 1 :(得分:1)
当您的应用程序第一次加载时,它会尝试加载Browser类。
在加载类时,JVM将执行指定的所有静态初始化,在这种情况下,它会尝试创建ChromeDriver对象,因为您使用new ChromeDriver()
初始化静态字段。此时,尚未调用open
方法来设置系统属性,因此会抛出异常,导致JVM退出。
要解决此问题,请创建ChromeDriver对象/之后/设置系统属性(例如,在open
方法中)或在启动JVM时设置系统属性:
java -Dwebdriver.chrome.driver=path/to/driver -jar somejar.jar
答案 2 :(得分:1)
您应该在您定义的函数中设置浏览器并设置路径。
试试这个:
public static void open(String url) {
String path = System.getProperty("user.dir");
System.setProperty("webdriver.chrome.driver",path + "\\chromedrive\\chromedriver.exe");
driver.manage().window().maximize();
WebDriver driver = new ChromeDriver();
driver.get(url);
}
无需单独创建驱动程序函数。请删除它。