通过类对象引用时,无法通过系统属性配置Selenium浏览器驱动程序

时间:2017-08-18 13:38:06

标签: java selenium selenium-webdriver webdriver

通过类对象引用时,无法通过系统属性配置Selenium浏览器驱动程序。

环境详情

Selenium:3.5.0

GeckoDriver:0.18.0

Mozilla Firefox:55.0.2

OS:Windows 8专业版

USECASE

当尝试通过类方法设置系统属性时,Selenium无法找到webdriver可执行文件并抛出java.lang.IllegalStateException,并显示错误消息:

The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases

代码块:

package demo;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Q45756729_PageTitle 
{
    WebDriver driver;
    public void title()
    {
    System.setProperty("webdriver.firefox.driver","C:\\Utility\\BrowserDrivers\\geckodriver.exe");
    driver=new FirefoxDriver();
    driver.get("https://www.google.co.in");
    String titleofthepage=driver.getTitle();
    System.out.println(titleofthepage);
    }

    public static void main(String[] args) 
    {
        Q45756729_PageTitle obj1=new Q45756729_PageTitle();
        obj1.title(); 
    }
}

例外:

Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
    at com.google.common.base.Preconditions.checkState(Preconditions.java:750)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
    at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:41)
    at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:115)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:329)
    at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:207)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:103)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:99)
    at demo.Q45756729_PageTitle.tite(Q45756729_PageTitle.java:12)
    at demo.Q45756729_PageTitle.main(Q45756729_PageTitle.java:21)

3 个答案:

答案 0 :(得分:3)

有时会发生这种情况:) -

替换此

System.setProperty("webdriver.firefox.driver","C:\\Utility\\BrowserDrivers\\geckodriver.exe");

System.setProperty("webdriver.gecko.driver","C:\\Utility\\BrowserDrivers\\geckodriver.exe");

希望这会有所帮助。感谢。

答案 1 :(得分:0)

使用gecko.driver代替此Firefox.driver

System.setProperty("webdriver.gecko.driver","E:/Gecko/geckodriver.exe");

答案 2 :(得分:0)

System.setProperty("webdriver.firefox.driver","C:\\Utility\\BrowserDrivers\\geckodriver.exe");

需要替换为

System.setProperty("webdriver.gecko.driver","C:\\Utility\\BrowserDrivers\\geckodriver.exe");

因为驱动程序exe已由gecko代替,但是类名仍为FirefoxDriver。