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 сеанса, чтобы обойти страницу входа.

Другие вопросы по тегам