【问题标题】:Unable to call FirefoxDriver constructor无法调用 FirefoxDriver 构造函数
【发布时间】:2016-02-09 12:33:27
【问题描述】:

当我运行以下代码时,我不断收到 unsupportedCommandException:

System.setProperty("webdriver.firefox.bin","C:\\Program Files\\Mozilla Firefox\\Firefox.exe");
    FirefoxProfile firefoxProfile = new FirefoxProfile();

    String domain = "extensions.firebug.";
    firefoxProfile.setPreference("app.update.enabled", false);
    firefoxProfile.addExtension(new File("D:\\\\firebug-1.11.2-fx.xpi"));
    firefoxProfile.setPreference(domain + "currentVersion", "1.11.2");
    firefoxProfile.setPreference("extensions.firebug.cookies.enableSites", true);
    firefoxProfile.setPreference("extensions.firebug.allPagesActivation", "on");

    firefoxProfile.setPreference(domain + "framePosition", "bottom");
    firefoxProfile.setPreference(domain + "defaultPanelName", "cookies");

    WebDriver driver = new FirefoxDriver(firefoxProfile);
    driver.get("http://www.google.com/webhp?complete=1&hl=en");
    WebElement query = driver.findElement(By.name("q"));

Firefox 版本:20.0,firebug 1.11.2。

我得到的错误信息如下:

Exception in thread "main" org.openqa.selenium.UnsupportedCommandException: Bad request

Command duration or timeout: 437 milliseconds
Build info: version: '2.32.0', revision: '6c40c18', time: '2013-04-09 17:23:22'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_24'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:190)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:183)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:179)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:96)
    at com.vinit.tiwari.TestCookieFirefox.main(TestCookieFirefox.java:48)

【问题讨论】:

    标签: firefox selenium-webdriver


    【解决方案1】:

    这可能与您的主机配置有关。

    如果你有这样的一行:

    127.0.0.1 domain1 domain2 domain3 localhost

    改成:

    127.0.0.1 localhost domain1 domain2 domain3

    【讨论】:

    【解决方案2】:

    根据@APWorsley 接受的答案,此问题可能是由/etc/hosts 文件中的环回适配器的多个别名引起的。

    如果您没有方便的访问权限来删除或重新排序别名(可能没有 root 访问权限,或者 Puppet 正在定期重写文件),由于 Selenium issue #3280 现在已修复,因此有一个 config-property 访问权限来说明并允许来自主机文件中不同别名的连接。

    首先在您的 hosts 文件中收集 loopback/localhost/127.0.0.1 的所有可能别名,然后设置 Firefox 驱动程序属性。比如你有localhost加上localhost.localdomain,你可以像这样配置驱动:

    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference(FirefoxProfile.ALLOWED_HOSTS_PREFERENCE, "localhost,localhost.localdomain");
    WebDriver driver = new FirefoxDriver(profile);
    

    【讨论】:

    • 谢谢。我有同样的问题,木偶不断重写这个文件。有没有办法永久更改 Firefox 的配置文件?这样我就不用到处更新java代码了。
    猜你喜欢
    • 2018-09-15
    • 2018-06-02
    • 1970-01-01
    • 2021-02-12
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多