python - 为什么 Selenium 的响应没有 sessionId?

标签 python windows firefox selenium cygwin

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

  1. Cygwin,运行 Nose 测试
  2. 直接使用 Cygwin
  3. Windows,运行 Nose 测试
  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 火狐 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/

相关文章:

javascript - 为什么 console.log.apply() 抛出非法调用错误?

html - 如何使用 css 设置 anchor 标记文本宽度?

python - 如何计算需要将一根字符串更改为另一根字符串的次数?

python - PySide:将 QItemSelectionModel 与 QListView 一起使用时出现段错误(?)

python - Django,无反向匹配

windows - SWI-Prolog 和 C++ 集成问题

Windows 权限,在不是管理员时获取 .dll 的句柄,不确定

ruby - Curl 不是可识别的命令 Ruby RVM

python - firefox webdriver for selenium on debian issue

python - Pandas df 到 csv 插入空行