大约70秒后,Selenium WebDriver崩溃(WebDriverError:newSession)

时间:2018-09-25 22:24:53

标签: javascript selenium-webdriver

尽管我没有对代码进行任何更改以致使这种情况发生,但我对现有的,正在运行的项目开始发生的新错误感到困惑(但这可能是由于FireFox更新引起的,或者到一个依赖突然失败)。开始发生之后,我确实添加了捕获以帮助调试导致突然退出的原因:

var prom = new Builder()
  .forBrowser('firefox')
  .build()
prom.catch((e) => {
  console.log(e)
})
let driver: WebDriver = await prom

基本上,当我的代码到达此代码块的最后一行时,它会弹出一个FireFox窗口,等待约70秒(现在应该已经履行了诺言),然后引发一个错误,这才是问题并将其记录到控制台:

{ WebDriverError: newSession
    at Object.throwDecodedError (\path\to\node_modules\selenium-webdriver\lib\error.js:550:15)
    at parseHttpResponse (\path\to\node_modules\selenium-webdriver\lib\http.js:542:13)
    at Executor.execute (\path\to\node_modules\selenium-webdriver\lib\http.js:468:26)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
  name: 'WebDriverError',
  remoteStacktrace: 'WebDriverError@chrome://marionette/content/error.js:178:5\nUnknownCommandError@chrome://marionette/content/error.js:472:5\ndespatch@chrome://marionette/content/server.js:290:13\nexecute@chrome://marionette/content/server.js:271:11\nonPacket/<@chrome://marionette/content/server.js:246:15\nonPacket@chrome://marionette/content/server.js:245:8\n_onJSONObjectReady/<@chrome://marionette/content/transport.js:490:9\n' }

有趣的是,当使用Visual Studio检查WebDriverError对象时,它说它具有message属性“ newSession”,由于某种原因它没有被记录到控制台(或在尝试时被字符串化)。

无论如何,该错误的构造不当,因为“ newSession”没有告诉我足够多的信息来跟踪发生了什么问题。

有人可以帮助我确定等待70秒左右的时间吗?

更新: 我确定了它正在等待的Web请求(到http://localhost:51290/session的POST,其中每次运行的端口都不同)。此请求在70秒后超时。我可以通过将{}发送到URL(也会弹出Firefox窗口)在外部应用程序(例如SoapUI)中复制此超时时间。但是,如果我在SoapUI中将超时设置为巨大的值,则JSON响应当然是:

{"value": {
   "error": "unknown error",
   "message": "newSession",
   "stacktrace": "WebDriverError@chrome://marionette/content/error.js:178:5\nUnknownCommandError@chrome://marionette/content/error.js:472:5\ndespatch@chrome://marionette/content/server.js:290:13\nexecute@chrome://marionette/content/server.js:271:11\nonPacket/<@chrome://marionette/content/server.js:246:15\nonPacket@chrome://marionette/content/server.js:245:8\n_onJSONObjectReady/<@chrome://marionette/content/transport.js:490:9\n"
}}

我在想我需要调试FireFox方面,有人可以让我开始吗?

1 个答案:

答案 0 :(得分:2)

我刚刚找到了解决该问题的方法。我的Geckodriver已过时。更新GeckoDriver解决了该问题。

在OSX上,我要做的是:

brew uninstall geckodriver

然后

brew install geckodriver

希望有帮助!