我正在尝试获取 selenium webdriver 中的标头。类似于以下内容:
>>> import requests
>>> res=requests.get('http://google.com')
>>> print res.headers
我需要使用 Chrome
webdriver 因为它支持 flash 和我需要测试网页的其他一些东西。到目前为止,这是我在 Selenium 中所拥有的:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://login.comcast.net/login?r=comcast.net&s=oauth&continue=https%3A%2F%2Flogin.comcast.net%2Foauth%2Fauthorize%3Fclient_id%3Dxtv-account-selector%26redirect_uri%3Dhttps%3A%2F%2Fxtv-pil.xfinity.com%2Fxtv-authn%2Fxfinity-cb%26response_type%3Dcode%26scope%3Dopenid%2520https%3A%2F%2Flogin.comcast.net%2Fapi%2Flogin%26state%3Dhttps%3A%2F%2Ftv.xfinity.com%2Fpartner-success.html%26prompt%3Dlogin%26response%3D1&reqId=18737431-624b-44cb-adf0-2a85d91bd662&forceAuthn=1&client_id=xtv-account-selector')
driver.find_element_by_css_selector('#user').send_keys('XY@comcast.net')
driver.find_element_by_css_selector('#passwd').send_keys('XXY')
driver.find_element_by_css_selector('#passwd').submit()
print driver.headers ### How to do this?
我已经看到一些建议运行整个 selenium 服务器来获取此信息的其他答案 ( https://github.com/derekargueta/selenium-profiler )。我如何通过 Webdriver 使用与上述类似的东西来获取它?
原文由 David542 发布,翻译遵循 CC BY-SA 4.0 许可协议
不幸的是,您 无法 从 Selenium webdriver 获得此信息,而且在不久的将来您似乎也无法获得。 关于这个主题的一段很长的谈话 的摘录:
主要原因是,从我从讨论中收集到的内容来看,webdriver 旨在“驱动浏览器”,并且将 API 扩展到该主要目标之外,在开发人员看来,将导致整体质量和API 的可靠性受到影响。
我在许多地方(包括上面链接的对话)看到的一种潜在解决方法是使用 BrowserMob Proxy ,它可用于捕获 HTTP 内容,并且 可与 selenium 一起使用- 尽管链接示例不使用Python 硒 API。似乎 BrowserMob Proxy 有一个 Python 包装器,但我无法保证它的功效,因为我从未使用过它。