【发布时间】: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