是否可以在selenium.webdriver和requests.session之间"转移"会话

Gor*_*oro 17 python browser session selenium python-requests

理论上,如果我将所有cookie从selenium的webdriver对象复制到requests.Sessionobject,请求是否能够继续,就好像会话没有被中断一样?

具体来说,我感兴趣的是编写自动化,我通过selenium到达网页上的特定位置,然后传递某个下载链接requests,这将下载并验证文件中的特定字节,有时是完整文件.(下载的文件的值将根据我在selenium中的交互而改变)

Vik*_*jha 17

是的,它肯定会奏效.以下代码段也应该有帮助 -

headers = {
"User-Agent":
    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
}
s = requests.session()
s.headers.update(headers)

for cookie in driver.get_cookies():
    c = {cookie['name']: cookie['value']}
    s.cookies.update(c)
Run Code Online (Sandbox Code Playgroud)

  • 也许用最后三行代替pythonic:`s.cookies.update({c ['name']:c ['value'] for c in driver.get_cookies()})` (4认同)
  • 只是更新我的答案.标头只是用于发送任何额外的标头,大多数网站都期望用户代理字符串的流行浏览器. (2认同)
  • 它会以另一种方式工作吗,您可以使用请求会话启动 selenium 浏览器吗? (2认同)
  • @EndermanAPM,是的。但是 Selenium Webdriver 有一个限制,即您只能为当前域添加 cookie。所以你的代码应该有以下流程 - 使用 selenium 打开网页,使用 Webdriver 添加 cookie,再次打开网页,它会工作。 (2认同)