#python #selenium #cookies
#python #селен #файлы cookie
Вопрос:
Согласно документации по файлам cookie selenium. Ниже приведен способ добавления файлов 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"})
URL-адрес должен быть извлечен первым перед добавлением файлов cookie, что означает, что для просмотра желаемых изменений в URL-адресе после добавления файлов 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"})
# refetching the url again after adding the cookies
driver.get("http://www.example.com")
Я хочу знать, возможно ли добавить файлы cookie и увидеть желаемые изменения в URL-адресе без повторной выборки URL-адреса?
Или, короче говоря, можно ли сделать код более чистым и удалить один driver.get()
вызов?
Примечание: добавление файлов cookie перед вызовом URL приведет 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")
Ответ №1:
Вы можете использовать refresh
метод
driver.get(url)
driver.add_cookie({"name": "example", "value": "example"})
driver.refresh()
Ответ №2:
Ну да, вы можете отправить ключ F5 в тело, чтобы обновить сайт вместо повторного открытия, я полагаю, если вам не нужно перезапускать браузер, а только перезагружать сайт.