Selenium addCookie получает исключение Invalid Cookie Domain Exception, хотя я нахожусь в правильном домене

Итак, я пытаюсь загрузить ранее сохраненные файлы cookie в свой веб-драйвер с помощью Selenium/Geb. Сначала я захожу в домен, а затем пытаюсь добавить файлы cookie. Но домен 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. Единственное решение, которое я могу придумать, это переопределить какой-то метод подмены моего текущего домена, но я понятия не имею, как это сделать.


person greenspider    schedule 03.10.2013    source источник
comment
Покажи мне, как ты устанавливаешь куки? Код пожалуйста.   -  person plsgogame    schedule 08.10.2013
comment
У меня такая же проблема. Любые подсказки?   -  person JordanBelf    schedule 14.03.2014


Ответы (2)


У меня была несколько похожая проблема, когда я получал ошибку «Вы можете устанавливать файлы cookie только для текущего домена» без видимой причины.

Я решил это, удалив из файла cookie все параметры, кроме имени и значения:

(Питон)

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)
person joaoroque    schedule 09.11.2014
comment
Это может не работать для серверов, которые проверяют домен файла cookie. Если сервер ожидает, что домен файла cookie будет .www.server.com, и вы позволите браузеру удалить его с помощью www.server.com, сервер может отклонить или проигнорировать Это. - person GDorn; 13.03.2016

Проблема устарела, и, возможно, данный ответ раньше работал, но с Selenium 3.140.0 удаление домена и добавление только имени и значения все равно вызовет исключение недопустимого домена cookie.

Что сработало для меня, так это browser.get, а затем выполнить browser.add_cookie, используя тот же домен для загруженной страницы.

Я подтвердил это, используя файлы cookie сеанса, чтобы обойти страницу входа.

person garrettbn    schedule 11.02.2021