Java org.openqa.selenium.WebDriverException:通过selenium v3.4.0和geckodriver-v0.20.1启动Firefox浏览器45.0.1时,连接被拒绝

Java org.openqa.selenium.WebDriverException:通过selenium v3.4.0和geckodriver-v0.20.1启动Firefox浏览器45.0.1时,连接被拒绝,java,selenium,firefox,selenium-webdriver,geckodriver,Java,Selenium,Firefox,Selenium Webdriver,Geckodriver,我无法为以下脚本启动Firefox浏览器 脚本#1: System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe"); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); WebDriver driver

我无法为以下脚本启动Firefox浏览器

脚本#1:

System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(capabilities);  
driver.close();
脚本#2:

System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com");
我的Firefox版本:45.0.1
Selenium Jar版本:Selenium-server-standalone-3.4.0
Gecko驱动程序版本:geckodriver-v0.20.1-win32

我收到的错误消息如下所述:

Exception in thread "main" org.openqa.selenium.WebDriverException: connection refused
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'SYNCGDC4098', ip: '172.26.59.52', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_151'
Driver info: driver.version: FirefoxDriver
remote stacktrace: 
    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.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$22(ProtocolHandshake.java:365)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:368)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:159)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:191)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:104)
    at seleniumtips.BasicScript.openApp(BasicScript.java:10)
    at seleniumtips.BasicScript.main(BasicScript.java:18)
线程“main”org.openqa.selenium.WebDriverException中的异常:连接被拒绝 生成信息:版本:“3.4.0”,版本:“未知”,时间:“未知” 系统信息:主机:'SYNCGDC4098',ip:'172.26.59.52',os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version:'1.8.0_151' 驱动程序信息:Driver.version:FirefoxDriver 远程堆栈跟踪: 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) 位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源) 位于java.lang.reflect.Constructor.newInstance(未知源) 位于org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57) 位于org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104) 位于org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$22(ProtocolHandshake.java:365) 位于java.util.stream.ReferencePipeline$3$1.accept(未知源) 在java.util.Spliterators$ArraySpliterator.tryAdvance处(未知源) 位于java.util.stream.ReferencePipeline.forEachWithCancel(未知源) 位于java.util.stream.AbstractPipeline.copyIntoWithCancel(未知源) 位于java.util.stream.AbstractPipeline.copyInto(未知源) 位于java.util.stream.AbstractPipeline.wrapAndCopyInto(未知源) 位于java.util.stream.FindOps$FindOp.evaluateSequential(未知源) 位于java.util.stream.AbstractPipeline.evaluate(未知源) 位于java.util.stream.ReferencePipeline.findFirst(未知源) 位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:368) 位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:159) 位于org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142) 位于org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) 位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637) 位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250) 位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236) 位于org.openqa.selenium.remote.RemoteWebDriver(RemoteWebDriver.java:137) 位于org.openqa.selenium.firefox.FirefoxDriver(FirefoxDriver.java:191) 位于org.openqa.selenium.firefox.FirefoxDriver(FirefoxDriver.java:108) 位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:104) 位于seleniumtips.BasicScript.openApp(BasicScript.java:10) 位于seleniumtips.BasicScript.main(BasicScript.java:18) 我做错了什么?

从中可以看出,geckodriver的最新版本是v0.20.1。您应该将此版本与当前最新版本的Firefox浏览器一起使用

此外,您正在使用旧版本的selenium(从,当前最新版本是3.12.0)

您需要更新firefox浏览器和selenium独立服务器


如果你想(被迫)使用最旧的(45.0.1),你应该使用相关的geckodriver。

你可以按照@Davide Patti的指示分别升级Seleniumgeckodriver。但是,在script1这一行中:
WebDriver=newfirefoxdriver(功能),因为它已被弃用

您可以尝试的代码:

FirefoxOptions foptions =  new FirefoxOptions();  
foptions.setCapability("marionette", true);  
WebDriver driver = new FirefoxDriver(foptions);
此错误消息

Exception in thread "main" org.openqa.selenium.WebDriverException: connection refused
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
…表示由于驱动程序无法启动其内部服务器与Java客户端通信而引发

为了简单起见,在使用Selenium Java Client v3.4.0和Firefox v45.0.1时,需要使用兼容的GeckoDriver二进制文件

  • 提及事项的发布说明:
强烈建议使用Geckodriver 0.16

  • 因此,您必须将
    GeckoDriver
    二进制版本压缩到0.16.0

  • 现在,当您使用Selenium Java Client v3.4.0时,GeckoDriver v0.16.0Firefox v45.0.1一起使用时,您必须使用
    System.setProperty()
    line传递键
    webdriver.gecko.driver
    以及作为GeckoDriver二进制文件绝对路径的值,最后通过类实例将功能marionate设置为false,然后使用类中的方法将功能合并到实例实例中以启动Firefox浏览器如下所示:

    System.setProperty("webdriver.gecko.driver", "C:/path/to/geckodriver.exe");
    DesiredCapabilities dc = new DesiredCapabilities();
    dc.setCapability("marionatte", false);
    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(dc);
    FirefoxDriver driver =  new FirefoxDriver(opt);
    driver.get("https://stackoverflow.com");
    System.out.println("Application opened");
    System.out.println("Page Title is : "+driver.getTitle());
    driver.quit();
    
您可以在以下内容中找到类似的讨论: