无法从Selenium Webdriver版本3.4.0

时间:2017-04-23 10:45:44

标签: selenium-webdriver

我遇到一个问题,我无法从64位的Windows操作系统(Windows 7)启动Selenium Webdriver版本3.4.0的firefox。 目前,我的机器上安装了firefox版本52.0.2。 我还将selenium jar文件添加到库中,但仍显示错误。

我的代码:

package sanity;

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

public class Login
{
        public static void main(String[] args)    
        {
            WebDriver driver=new FirefoxDriver();    
            driver.close(); 
        }
}

错误:

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 sanity.Login.main(Login.java:18)

在此之后,我从SeleniumHQ.org下载了GeckoDriverService并运行下面的代码,现在在使用Geckodriver路径运行下面的更新代码之后,firefox浏览器正在启动但不会自动关闭。我也在控制台收到一些消息。

代码:

package sanity;

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

public class Login 
{

        public static void main(String[] args) 
        {

          String Firefoxdriverpath="C://Users//Ashish//Downloads//geckodriver-v0.16.0-win64//geckodriver.exe";

            System.setProperty("webdriver.gecko.driver", Firefoxdriverpath);

            WebDriver driver=new FirefoxDriver();

            driver.close(); 
        }

}

控制台:

    1492944489305   geckodriver INFO    Listening on 127.0.0.1:12059
1492944489973   geckodriver::marionette INFO    Starting browser \\?\C:\Program Files (x86)\Mozilla Firefox\firefox.exe with args ["-marionette"]
1492944491445   addons.manager  ERROR   startup failed: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIFile.create]"  nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)"  location: "JS frame :: resource://gre/modules/FileUtils.jsm :: FileUtils_getDir :: line 70"  data: no] Stack trace: FileUtils_getDir()@resource://gre/modules/FileUtils.jsm:70 < FileUtils_getFile()@resource://gre/modules/FileUtils.jsm:42 < AddonManagerInternal.validateBlocklist()@resource://gre/modules/AddonManager.jsm:700 < AddonManagerInternal.startup()@resource://gre/modules/AddonManager.jsm:870 < this.AddonManagerPrivate.startup()@resource://gre/modules/AddonManager.jsm:3033 < amManager.prototype.observe()@resource://gre/components/addonManager.js:65
JavaScript error: resource://gre/modules/AddonManager.jsm, line 1677: NS_ERROR_NOT_INITIALIZED: AddonManager is not initialized
1492944492505   Marionette  INFO    Listening on port 50231
JavaScript error: resource://gre/modules/AddonManager.jsm, line 2585: NS_ERROR_NOT_INITIALIZED: AddonManager is not initialized
Apr 23, 2017 4:18:14 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

请帮助。

谢谢, Ashish Jain

8 个答案:

答案 0 :(得分:1)

请使用&#34; driver.quit&#34;再试一次。而不是&#34; driver.close&#34;。

关于&#34; Javascript错误(AddonManager)&#34;我还在试图找出解决方法,如果有人知道,请与我们分享:)

答案 1 :(得分:0)

你的Firefox版本是什么?

有时问题是安装的FireFox版本和geckodriver版本之间的不兼容性

答案 2 :(得分:0)

关于&#34; Javascript错误(AddonManager)&#34; ...我今天几乎疯了,试图解决这个问题,因为所有组件都在上周逐渐安装。最后我解决了它。 以下是解决方案和解释: geckodriver v.0.16.0&#34;仅与Selenium 3.4及更高版本兼容&#34; (正如它们在页面上所说的那样)。 一周前,selenium 3.3.1是最后一个版本。截至4月21日,selenium3.4.0已经发布。 我不得不从头开始重新创建项目,重新添加Selenium罐子。出于某种原因,只需在旧项目中替换它们,就没有办法解决问题。

答案 3 :(得分:0)

请试试下面的代码,

String Firefoxdriverpath="C://Users//Ashish//Downloads//geckodriver-v0.16.0-win64//geckodriver.exe";
System.setProperty("webdriver.gecko.driver", Firefoxdriverpath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(capabilities);  
driver.close(); 

如果有效,请告诉我。

答案 4 :(得分:0)

我没有在代码中看到任何重大错误。但您需要遵循以下某些指导原则:

声明String Firefoxdriverpath时,您需要使用单斜杠,即“/”

e.g。 String Firefoxdriverpath="C:/Utility/BrowserDrivers/geckodriver.exe";

或者你需要逃避反斜杠,即“\\”

e.g。 String Firefoxdriverpath="C:\\Utility\\BrowserDrivers\\geckodriver.exe";

请告诉我这是否适合您。

答案 5 :(得分:0)

我有同样的问题。 使用driver.quit();代替driver.close();

有什么用处

答案 6 :(得分:0)

我有类似的问题,但最终通过以下改为selenium 3.4功能的小代码解决了问题 -

DesiredCapabilities capabilities = DesiredCapabilities.firefox();

capabilities.setCapability("marionette", false); // true gives that Javascript error (AddonManager is not initialized)

答案 7 :(得分:0)

使用Firefox版本时出现此错误:45.9.0; Selenium 3.4.0和Gecko驱动程序:16.1。

解决方案:降级到gecko 16.0并使用: System.setProperty(&#34; webdriver.firefox.marionette &#34;,&#34; Path&#34;);

希望这有帮助。