Selenium WebDriver аварийно завершает работу (WebDriverError: newSession) примерно через 70 секунд - PullRequest
0 голосов
/ 26 сентября 2018

Я озадачен этой новой ошибкой, которая начала происходить в моем существующем, работающем проекте, даже если я не вносил никаких изменений в код, чтобы это произошло (но это могло произойти из-за обновления 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' }

Забавно, что при проверке WebDriverErrorобъект, использующий Visual Studio, говорит, что у него есть свойство сообщения "newSession", которое по какой-то причине не регистрируется на консоли (или не преобразуется в строку, когда я пытаюсь это сделать).

В любом случае, ошибка плохо сконструированапотому что "newSession" не сообщает мне достаточно информации, чтобы отследить, что идет не так.

Может ли кто-нибудь помочь мне определить, что ждет ~ 70 секунд?

ОБНОВЛЕНИЕ : я определил веб-запрос, на котором он ожидает (от POST до http://localhost:51290/session, где порт меняется при каждом запуске).Именно этот запрос истекает через 70 секунд.Я могу продублировать этот тайм-аут во внешнем приложении (например, SoapUI), отправив {} на URL-адрес (который также открывает окно Firefox).Однако, если я установлю тайм-аут в 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 голосов
/ 13 октября 2018

Я только что нашел решение этой проблемы.Мой Geckodriver был устаревшим.Обновление GeckoDriver решило проблему.

В OSX я должен был сделать следующее:

brew uninstall geckodriver

, а затем

brew install geckodriver

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...