Selenium выдает KeyError: 'sessionId'

Я пытаюсь запустить firefox с помощью селена, но постоянно получаю

File "/Library/Python/2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 150, in __init__
    keep_alive=True)
File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
    self.start_session(desired_capabilities, browser_profile)
File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 180, in start_session
    self.session_id = response['sessionId']
KeyError: 'sessionId'

Код, который я пытаюсь запустить, довольно прост

from selenium import webdriver
driver = webdriver.Firefox()

Решения, которые я пробовал:

  1. Пробовал обновить селен (я уже использовал последнюю версию)
  2. Обновлен geckodriver до версии 0.16.1.
  3. Пробовал менять настройки прокси

Ничего не работало до сих пор.

Конфигурация, которую я использую: geckodriver 0.16.1, Mozilla Firefox 53, Python 2.7, Selenium 3.4.1, я работаю в системе Mac (если это поможет)


person iVvaibhav    schedule 01.05.2017    source источник
comment
Вам нужно указать путь к вашему бинарному файлу geckodriver внутри метода Firefox()   -  person demouser123    schedule 01.05.2017
comment
@bad_deadpool Я тоже пробовал это, но все еще не работает. Пожалуйста, предложите что-нибудь еще   -  person iVvaibhav    schedule 02.05.2017


Ответы (4)


Обновление с Selenium 3.2.0 до 3.7.0 исправило эту ошибку для меня. У меня геккодрайвер 0.19.1

pip install -U selenium
person xlash    schedule 05.11.2017

Я не вдавался в подробности, извините за это, но, возможно, это может вам помочь или дать вам полезную подсказку:

В Ubuntu 16.04 у меня работало следующее:

Если вы запустите установщик pip как обычную учетную запись пользователя, он создаст эти два каталога с содержимым:

  • ~/.local/библиотека
  • ~/.local/селен

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

sudo pip install -U selenium

Тогда это сработало для меня. Также посмотрите, какую версию python использует ваш скрипт, мне нужно было сообщить bash, что я использую python2.7 через shebang в начале скрипта python:

#!/usr/bin/python2.7
# -*- coding: utf-8 -*-

Возможно, это связано с тем, какие привязки python у вас установлены, но я не знаю, это всего лишь предположение, как я уже сказал выше, я не особо вникал в это, но это может дать вам подсказку.

Я надеюсь, что это помогает. Ваше здоровье!

person bluefire81    schedule 17.05.2017

Я решил проблему, понизив версию сервера селена до версии 2.x.

т.е. - вместо последней версии сервера 3.x (selenium-server-standalone-3.141.59.jar) я пробовал последнюю версию 2.x. версия сервера селена (selenium-server-standalone-2.53.1.jar)

Моя версия Python:

Python 2.7.10
robotframework==2.9.2
robotframework-requests==0.4.5
requests==2.11.1
requests-oauthlib==0.7.0
requests-toolbelt==0.7.0
robotframework-selenium2library==1.8.0
selenium==3.0.1
requests-oauthlib==0.7.0
requests-toolbelt==0.7.0

Другое программное обеспечение:

ChromeDriver 77.0.3865.40
Google Chrome Version 77.0.3865.90 (Official Build) (64-bit)
Windows 10`
person Eugene Malinovsky    schedule 08.10.2019

Для меня произошло следующее (я работаю на Kali Linux):

  1. Удаление Selenium:
    pip uninstall selenium

  2. Когда я попытался переустановить селен, я обнаружил, что в /usr/lib/python3/dist-packages/ уже присутствует другой экземпляр селена (v 4.0).

  3. Я удалил папки selenium и selenium-4.0.0a1.egg-info из вышеупомянутого каталога (для этого вам нужно разрешение sudo).

  4. Я переустановил selenium с помощью pip и теперь скрипт работает нормально.

person Pratik.garai    schedule 23.03.2020