为什么Selenium的回应没有sessionId?

我正在尝试运行Selenium的Firefox webdriver,并得到下面的错误。 我可以看到, response没有sessionId – 违规行是self.session_id = response['sessionId'] – 但我不知道为什么。 我已经通过以下方式运行它,并得到相同的错误:

  1. Cygwin,运行nosetests
  2. Cygwin直接
  3. Windows,正在运行nosetests
  4. Windows直接

---------------------------------------------------------------------- Traceback (most recent call last): File "C:\dev\tools\cygwin\home\207013288\dev\projects\scorpion\test\unit\test_ approve_workflows.py", line 27, in test_login 'password', userid='207013288', test=True) File "C:\dev\tools\cygwin\home\207013288\dev\projects\scorpion\src\workflows.p y", line 20, in login browser = webdriver.Firefox() File "C:\dev\sdks\Python33\lib\site-packages\selenium-2.32.0-py3.3.egg\seleniu m\webdriver\firefox\webdriver.py", line 62, in __init__ desired_capabilities=capabilities) File "C:\dev\sdks\Python33\lib\site-packages\selenium-2.32.0-py3.3.egg\seleniu m\webdriver\remote\webdriver.py", line 72, in __init__ self.start_session(desired_capabilities, browser_profile) File "C:\dev\sdks\Python33\lib\site-packages\selenium-2.32.0-py3.3.egg\seleniu m\webdriver\remote\webdriver.py", line 116, in start_session self.session_id = response['sessionId'] nose.proxy.KeyError: 'sessionId' -------------------- >> begin captured logging << -------------------- selenium.webdriver.remote.remote_connection: DEBUG: POST http://127.0.0.1:63801/ hub/session {"sessionId": null, "desiredCapabilities": {"version": "", "browserN ame": "firefox", "platform": "ANY", "javascriptEnabled": true}} --------------------- >> end captured logging << ---------------------

我之前没有使用过selenium,我不知道该从哪里出发。

好的,首先我想说的是,我几乎拔掉了所有的头发,试图解决这个问题。 我的设置:Python 2.7 Firefox 22.0 seleniumium WebDriver 2.33 Windows XP(通过代理服务器连接Internet)

发现我的问题了吗?

解:

  • 打开控制面板
  • 互联网选项
  • 连接
  • 局域网配置
  • 在这个页面上,您可能会看到您的代理服务器的详细信息,并带有一个复选框:“不要使用代理服务器作为本地地址”。 此复选框可能已被选中(因为不使用本地地址代理是很有意义的)。 不幸的是,seleniumium WebDriver似乎忽略了这个复选框,这是有价值的。 选中或取消选中,它会检测到您的代理服务器,并将其应用于所有网址(或至少这是我的情况)。
  • 点击“高级”按钮,在“例外”框中手动输入“127.0.0.1”。
  • 保存更改。
  • 在web驱动中重新运行你的测试,希望你不会再看到引用的错误信息: self.session_id = response ['sessionId']

事情没有为我工作:

在找到这个解决方案(在一个更有经验的工程师的帮助下)之前,我仔细阅读了这里的说明: http : //docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#advanceduserinteractions ..用于设置/更改/绕过代理。 虽然没有得到我想要的结果。

我也看了这个: 在Python中实现WebdriverBackedseleniumium ..但是它提到了一个旧版本的webdriver,它建议删除所有的系统代理设置,这是一个绝对的非启动器(就我而言)。

MAC OSX解决方案

我使用Python 2.7和FireFox 48.0.2和Chrome Versie 57.0.2987.98(64位)。

对于我的错误*self.session_id = response['sessionId']*是通过转到系统偏好设置 – >网络 – >高级在无线标签。 – >代理服务器 – >打开“自动代理检测”。

更改后,错误不再发生。