【问题标题】:IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; (Selenium)IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.gecko.driver 系统属性设置; (硒)
【发布时间】:2017-07-09 22:15:08
【问题描述】:

注释掉配置会导致崩溃:

thufir@doge:~/NetBeansProjects/selenium$ 
thufir@doge:~/NetBeansProjects/selenium$ gradle clean fatJar;java -jar build/libs/selenium-all.jar 

BUILD SUCCESSFUL in 1m 17s
4 actionable tasks: 4 executed
Jul 09, 2017 3:03:39 PM net.bounceme.dur.web.selenium.Main main
INFO: init..
Jul 09, 2017 3:03:41 PM net.bounceme.dur.web.selenium.Scraper scrape
INFO: {webdriver.gecko.driver=/usr/bin/firefox, url=http://www.google.com, url2=file:///home/thufir/wget/foo.html}
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:738)
    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:330)
    at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:207)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:104)
    at net.bounceme.dur.web.selenium.Scraper.scrape(Scraper.java:24)
    at net.bounceme.dur.web.selenium.Main.run(Main.java:20)
    at net.bounceme.dur.web.selenium.Main.main(Main.java:15)
thufir@doge:~/NetBeansProjects/selenium$ 
thufir@doge:~/NetBeansProjects/selenium$ 

如何或在哪里集成this

{
    "capabilities": {
        "alwaysMatch": {
            "moz:firefoxOptions": {
                "binary": "/usr/local/firefox/bin/firefox",
                "args": ["--no-remote"],
                "prefs": {
                    "dom.ipc.processCount": 8
                },
                "log": {
                    "level": "trace"
                }
            }
        }
    }
}

我什至不知道that 是什么意思。

代码:

package net.bounceme.dur.web.selenium;

import java.util.Properties;
import java.util.logging.Logger;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Scraper {

    private static final Logger log = Logger.getLogger(Scraper.class.getName());

    public Scraper() {
    }

    public void scrape(Properties p) {
        log.info(p.toString());

        String key = "webdriver.gecko.driver";
        String url = p.getProperty("url");
        String value = p.getProperty(key);
        // System.setProperty(key, value);
        // System.setProperties(p);

        WebDriver driver = new FirefoxDriver();
        driver.get(url);
    }

}

最好将配置放在属性文件中。该属性文件的键/值对是什么?

【问题讨论】:

  • webdriver.gecko.driver 的值应该是 gecko wendriver 的路径,而不是 firefox 的二进制文件。你能告诉我们你的财产档案吗?您可以从这里下载 gecko webdriver exe。github.com/mozilla/geckodriver/releases

标签: java unit-testing selenium selenium-webdriver gecko


【解决方案1】:

您可以执行以下步骤:

  1. github.com/mozilla/geckodriver/releases

  2. 下载最新的 geckodriver
  3. 检查您机器上 Firefox 的位置。

    在 Mac 上,Firefox 位于: /Applications/Firefox.app/Contents/MacOS/firefox-bin

    在 Windows 上,Firefox 应位于以下位置: C:\Program Files (x86)\Mozilla Firefox\firefox.exe

    代码如下:

     System.setProperty("webdriver.gecko.driver","/Users/monika/Downloads/geckodriver 2");  //the location of geckodriver on your machine
     FirefoxOptions options = new FirefoxOptions();
    options.setBinary("/Applications/Firefox.app/Contents/MacOS/firefox-bin"); //This is the location where you have installed Firefox on your machine
    options.addArguments("--no-remote");
    options.addPreference("dom.ipc.processCount",8);
    
    FirefoxDriver driver = new FirefoxDriver(options);
    driver.get("http://www.google.com");
    

【讨论】:

    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 2017-12-21
    • 2017-03-16
    • 2017-02-04
    • 2016-12-05
    • 2020-03-14
    • 2017-09-07
    • 1970-01-01
    相关资源
    最近更新 更多