Сбой Selenium с selenium.common.exceptions.WebDriverException: Сообщение: newSession - PullRequest
0 голосов
/ 25 октября 2018

ОС: Ubuntu 16.04.3 LTS (GNU / Linux 4.4.0-1066-aws x86_64)

Версия Selenium: selenium == 3.6.0

Браузер: Mozilla Firefox 63.0

Версия Geckodriver: geckodriver-v0.19.0-linux64

Ожидаемое поведение -

Создайте новый браузер Firefox и выполните несколько шагов - парсинг веб-сайта.

Фактическое поведение -

Сбой с журналом: -

    self.driver = webdriver.Firefox()
  File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 154, in __init__
    keep_alive=True)
  File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 151, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 240, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: newSession

Кто-нибудь сталкивался с этой проблемой ранее и имеет возможное решение?

ОБНОВЛЕНИЕ: Выполните следующую команду: geckodriver --log trace & curl -d '{}' 127.0.0.1:4444/session

Журнал: - https://pastebin.com/TirTNKrG

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Я исправил проблему, обновив пакет python для selenium и использовав последнюю версию geckodriver.

Спасибо @fzbd за всю вашу помощь.

0 голосов
/ 31 октября 2018

Спасибо @skyfail.Ваш ответ помог мне.Следующая последовательность действий была выполнена и решена проблема.

  1. Чтобы обновить селен, запустите: sudo pip3 install selenium --upgrade

  2. Чтобы обновить geckodriver, выполните шаги 1-3из this

  3. sudo mv geckodriver /usr/local/bin/geckodriver, / usr / local / bin обычно находится в вашей переменной PATH, поэтому редактировать ее не нужно.
0 голосов
/ 26 октября 2018

В вашем журнале есть следующая строка:

1540501901605 geckodriver ОШИБКА Используемый адрес (ошибка ОС 98)

, который указывает, что драйвер пытается использоватьпорт, который уже используется каким-то другим процессом.Поскольку журнал не показывает, какой это порт, вы можете запустить драйвер с помощью strace:

strace geckodriver 2>&1 | grep -iE 'bind|getsockname'

В моем случае я получаю следующие строки:

bind (3, {sa_family = AF_INET, sin_port = htons (4444), sin_addr = inet_addr ("127.0.0.1")}, 16) = 0

getsockname (3, {sa_family = AF_INET, sin_port = htons (4444)), sin_addr = inet_addr ("127.0.0.1")}, [128-> 16]) = 0

Затем можно проверить, какой процесс использует порт (например):

netstat -tulpn | grep -i 4444 

В моем случае возвращается:

tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN 31471 / geckodriver

Согласно проблема с регистрацией портов geckodriver , вы можете позволить ОС выделить свободный порт:

geckodriver --port 0

Если все это не сработает, возможно, существует несовместимость между вашей версией geckodriver и селеном, поскольку эта ошибка в журнале предполагает:

geckodriver :: marionette TRACE <- [1,1, {"error": "неизвестная команда", "message": "newSession","StackTrace": "WebDriverError @ хром: //marionette/content/error.js: 178: 5 </p>

Я использую следующие версии:

  • firefox 62.0.3
  • geckodriver0,23,0
  • селен 3,14,1
...