Selenium addCookie получает недопустимое исключение домена cookie, хотя я нахожусь в нужном домене
Поэтому я пытаюсь загрузить ранее сохраненные куки в мой веб-драйвер с помощью Selenium/Geb. Сначала я захожу в домен, а затем пытаюсь добавить куки. Но домен cookie и домен URL не регистрируются друг с другом:
Caught: org.openqa.selenium.InvalidCookieDomainException:
You may only add cookies that would be visible to the current domain: .domain=.example.com => .www.example.com
Build info: version: '2.35.0', revision: '8df0c6bedf70ff9f22c647788f9fe9c8d22210e2', time: '2013-0 8-17 12:46:41'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-48-generic', java.version: '1.6.0_27'
Driver info: driver.version: unknown
Кажется, домен cookie .example.com
и домен я получаю, когда я иду в http://example.com
является .www.example.com
, Единственное решение, которое я могу придумать, - это переопределить какой-то метод подмены моего текущего домена, но я понятия не имею, как это сделать.
3 ответа
У меня была несколько похожая проблема, когда я получал ошибку "Вы можете установить куки только для текущего домена" без видимой причины.
Я решил это, удалив cookie всех параметров, кроме имени и значения:
(Python)
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
print cookie
new_cookie={}
new_cookie['name']=cookie['name']
new_cookie['value']=cookie['value']
driver.add_cookie(new_cookie)
До (с проблемой):
driver = webdriver.Chrome(service=service, options=options)
for cookie in exported_cookies:
driver.add_cookie(cookie)
driver.get(url)
После (без проблем):
driver = webdriver.Chrome(service=service, options=options)
driver.get(url) # Add driver.get() before set cookie
for cookie in exported_cookies:
driver.add_cookie(cookie)
driver.get(url)
Проблема устарела, и, возможно, данный ответ раньше работал, но с Selenium 3.140.0 удаление домена и добавление только имени и значения все равно вызовет исключение недопустимого домена cookie.
Что сработало для меня, так это browser.get, а затем выполнить browser.add_cookie, используя тот же домен для загруженной страницы.
Я подтвердил это, используя файлы cookie сеанса, чтобы обойти страницу входа.