我遇到一个问题,我无法从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
答案 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;);
希望这有帮助。