如何在python selenium中向网络驱动程序添加cookie的同时编写更干净的代码



根据selenium cookie文档。以下是将cookie添加到驱动程序的方法

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# Adds the cookie into current browser context
driver.add_cookie({"name": "key", "value": "value"})

在添加cookie之前,需要首先获取url,这意味着在添加cookie后,要查看url中所需的更改,需要重新获取网站。

因此,使用cookie的典型调用类似于

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# Adds the cookie into current browser context
driver.add_cookie({"name": "key", "value": "value"})

# refetching the url again after adding the cookies
driver.get("http://www.example.com")

我想知道是否可以添加cookie并在不重新修改url的情况下查看url中所需的更改?或者,简而言之,是否可以使代码更干净并删除一个driver.get()调用?

注意:在调用url之前添加cookie将抛出Message: invalid cookie domain错误

Edit: since the site needs to be initially loaded, cookies with same name needs to be deleted before adding, this is another bump.

示例代码:

from selenium import webdriver
from webdriver_manager import chrome
import json
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("www.example.com")
driver.delete_all_cookies()
with open('cookies.json', r) as fh:
cstring = fh.read()
jcookies = json.loads(cstring)

for cookie in jcookies:
driver.add_cookie({"name": cookie["name"], "value": cookie["value"]})

driver.get("www.example.com")

您可以使用refresh方法

driver.get(url)
driver.add_cookie({"name": "example", "value": "example"})
driver.refresh()

是的,如果你不需要重新启动浏览器,只需要重新加载网站,你可以向主体发送F5键来刷新网站,而不是再次打开。

相关内容

最新更新