Selenium 给出“ KeyError: 'sessionId' ”

iVv*_*hav 5 python selenium python-2.7 geckodriver

我正在尝试使用 selenium 启动 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'
Run Code Online (Sandbox Code Playgroud)

我试图运行的代码相当简单

from selenium import webdriver
driver = webdriver.Firefox()
Run Code Online (Sandbox Code Playgroud)

我尝试过的解决方案:

  1. 尝试更新硒(我已经在使用最新的)
  2. 将 geckodriver 更新至 0.16.1 版
  3. 尝试更改代理设置

到目前为止没有任何效果。

我使用的配置:geckodriver 0.16.1、Mozilla Firefox 53、Python 2.7、Selenium 3.4.1,我在 Mac 系统上(如果有帮助)

小智 0

我没有详细说明这一点,对此感到抱歉,但这也许可以帮助您或给您一个有用的提示:

以下内容在 Ubuntu 16.04 下对我有用:

如果您以普通用户帐户运行 pip 安装程序,它似乎会创建以下两个目录,其中包含以下内容:

  • 〜/.local/lib
  • 〜/.local/硒

不知何故,它无法正确更新它,因此这两个目录似乎包含旧版本的 selenium 和我的设置中所需的库。我已经删除了这两个子树,因此导入 webdriver 现在使用系统范围内的 selenium 安装,我通过以下方式将其升级为 root

sudo pip install -U selenium
Run Code Online (Sandbox Code Playgroud)

然后它对我有用。另请查看您的脚本使用的是哪个 python 版本,我需要通过 python 脚本开头的 shebang 告诉 bash 我正在使用 python2.7:

#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

也许这与你安装的Python绑定有关,但我不知道,这只是一个猜测,正如我上面所说,我没有深入研究它,但它可能会给你一个提示。

我希望它有帮助。干杯!