尽管我没有对代码进行任何更改以致使这种情况发生,但我对现有的,正在运行的项目开始发生的新错误感到困惑(但这可能是由于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方面,有人可以让我开始吗?
答案 0 :(得分:2)
我刚刚找到了解决该问题的方法。我的Geckodriver已过时。更新GeckoDriver解决了该问题。
在OSX上,我要做的是:
brew uninstall geckodriver
然后
brew install geckodriver
希望有帮助!