我正在尝试运行 Selenium 的 Firefox webdriver 并收到以下错误。我可以看到 response
没有 sessionId
- 违规行是 self.session_id = response['sessionId']
- 但我不知道为什么。我以下列方式运行它并得到相同的错误:
- Cygwin,运行 Nose 测试
- 直接使用 Cygwin
- Windows,运行 Nose 测试
- 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 火狐 22.0 Selenium WebDriver 2.33 Windows XP(通过代理服务器连接互联网)
发现我的问题了吗?
解决方案:
- 打开控制面板
- 互联网选项
- 连接
- 局域网配置
- 在此页面上,您可能会看到代理服务器的详细信息,并带有一个复选框:“不要对本地地址使用代理服务器”。 此复选框可能已被选中(因为不对本地地址使用代理是很有意义的)。 不幸的是,Selenium WebDriver 似乎忽略了这个复选框及其值(value)。 选中或未选中,它将检测您的代理服务器并将其应用于所有 url(或者至少在我的案例中它是这样做的。)
- 点击“高级”按钮,在“异常(exception)”框中手动输入“127.0.0.1”。
- 保存更改。
- 在网络驱动程序中重新运行您的测试,希望您不会再看到涉及以下内容的错误消息:self.session_id = response['sessionId']
对我不起作用的事情:
在找到此解决方案之前(在更有经验的工程师的帮助下),我仔细阅读了此处的说明:http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#advanceduserinteractions .. 用于设置/更改/绕过代理。不过,我没有得到想要的结果。
我也看过这个: Implementing WebdriverBackedSelenium in Python .. 但它说的是旧版本的 webdriver,它建议删除系统范围内的所有代理设置,这绝对是行不通的(就我而言)。
关于python - 为什么 Selenium 的响应没有 sessionId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448772/