【问题标题】:org.openqa.selenium.WebDriverException: connection refused with Selenium Geb GeckoDriver and Firefoxorg.openqa.selenium.WebDriverException:与 Selenium Geb GeckoDriver 和 Firefox 的连接被拒绝
【发布时间】:2019-01-31 14:52:21
【问题描述】:

在安装了 Mozilla Firefox 60.4.0 的 Linux 机器上运行测试时,我随机收到此错误“org.openqa.selenium.WebDriverException:连接被拒绝”。

我尝试过的不同组合是:

1) 硒 3.12.0 geb-spock:2.1 GeckoDriver 0.18.0

2) 硒 3.12.0 geb-spock:2.1 GeckoDriver 0.23.0

3) 硒 3.14.0 geb-spock:2.1 GeckoDriver 0.23.0

我什至尝试将 xvfb 显示设置为偏移量 5。 此外,检查了任何已失效的 geckodriver 和 firefox。没有这样的失效进程。

有没有办法尝试捕获这个“org.openqa.selenium.WebDriverException:连接被拒绝”,然后再次尝试创建驱动程序?有谁知道为什么会出现这个错误以及如何解决这个问题?

堆栈跟踪:

geb.driver.DriverCreationException: failed to create driver from callback 'script1548780037482534636672$_run_closure1$_closure4$_closure7@288e23a'
    at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:35)
    at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy:85)
    at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy)
    at geb.driver.CachingDriverFactory$SimpleCache.get(CachingDriverFactory.groovy:32)
    at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:84)
    at geb.Configuration.createDriver(Configuration.groovy:382)
    at geb.Configuration.getDriver(Configuration.groovy:371)
    at geb.Browser.getDriver(Browser.groovy:111)
    at geb.navigator.factory.BrowserBackedNavigatorFactory.<init>(BrowserBackedNavigatorFactory.groovy:35)
    at geb.Configuration.createNavigatorFactory(Configuration.groovy:417)
    at geb.Browser.createNavigatorFactory(Browser.groovy:133)
    at geb.Browser.getNavigatorFactory(Browser.groovy:121)
    at geb.Page.init(Page.groovy:144)
    at geb.Browser.createPage(Browser.groovy:859)
    at geb.Browser.to(Browser.groovy:550)
    at geb.Browser.to(Browser.groovy:539)
    at geb.spock.GebSpec.methodMissing(GebSpec.groovy:56)
    at tests.UserTest.Step 1: user can login(UserTest.groovy:40)
Caused by: org.openqa.selenium.WebDriverException: connection refused
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'va1c143', ip: '10.20.10.77', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-754.9.1.el6.x86_64', java.version: '1.8.0_191'
Driver info: driver.version: FirefoxDriver
remote stacktrace: stack backtrace:
   0:           0x5787ed - backtrace::backtrace::trace::h59229d13f6a8837d
   1:           0x578942 - backtrace::capture::Backtrace::new::h23089c033eded8f0
   2:           0x4463cc - webdriver::error::WebDriverError::new::hd11f864b1fdf4510
   3:           0x450591 - geckodriver::marionette::MarionetteHandler::create_connection::h6f7058fccafe4367
   4:           0x425c32 - <webdriver::server::Dispatcher<T, U>>::run::h8f5348b8f5f7c053
   5:           0x40b22c - std::panicking::try::do_call::hb67c6fb6bcd96195
   6:           0x5dc20a - panic_unwind::__rust_maybe_catch_panic
                        at /checkout/src/libpanic_unwind/lib.rs:98
   7:           0x41b943 - <F as alloc::boxed::FnBox<A>>::call_box::h4100941edc372034
   8:           0x5d48a4 - alloc::boxed::{{impl}}::call_once<(),()>
                        at /checkout/src/liballoc/boxed.rs:650
                         - std::sys_common::thread::start_thread
                        at /checkout/src/libstd/sys_common/thread.rs:21
                         - std::sys::imp::thread::{{impl}}::new::thread_start
                        at /checkout/src/libstd/sys/unix/thread.rs:84
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
    at script1548780037482534636672$_run_closure1.closure4$_closure7(script1548780037482534636672.groovy:17)
    at script1548780037482534636672$_run_closure1.closure4$_closure7(script1548780037482534636672.groovy)
    at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:29)

【问题讨论】:

  • 您好。我在 Geb 邮件列表上回复了您,我们一致认为这不是 Geb 问题。你在这里做了什么别的吗,比如向 GeckoDriver 团队报告?或者您可以准备一个MCVE 供所有人从 GitHub 克隆、构建、运行和重现您的问题吗?
  • 在 geckodriver github.com/mozilla/geckodriver/issues/1500报告了这个问题
  • 再一次,您也没有添加MCVE,只是报告了问题。我认为您通过调用堆栈获得解决方案但没有代码的机会会很低。你应该帮助你的助手来帮助你!无论如何,祝你好运。

标签: selenium firefox selenium-webdriver geckodriver geb


【解决方案1】:

此错误消息...

geb.driver.DriverCreationException: failed to create driver from callback 'script1548780037482534636672$_run_closure1$_closure4$_closure7@288e23a'

...暗示 geb 无法启动/生成新的 GeckoDriver 进程。

此问题背后可能有多种原因,如下所示:

  • 根据geb.driver.DriverCreationException: failed to create driver from callback

    • 您需要在GebConfig中提供GeckoDriver绝对路径,如下:

      driver = {
         System.setProperty('webdriver.gecko.driver', '/path/to/geckodriver')
         new FirefoxDriver()
      }
      
    • 确保已安装 Firefox 浏览器。

    • 根据以下矩阵确保 GeckoDriver 版本与 SeleniumFirefox 版本兼容:

【讨论】:

  • 我的一切设置都正确,就像你提到的那样。为什么它大部分时间都可以正常工作而没有任何错误?我只有在几次运行后才会收到此错误,并且它是随机发生的。我将尝试使用 GeckoDriver 版本 0.22.0、0.21.0 版本运行并查看。
猜你喜欢
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 2018-11-03
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多