Это сообщение об ошибке ...
selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
... означает, что была предпринята незаконная попытка установить повара ie в домене, отличном от домена текущего документа.
Подробности
В соответствии со стандартными спецификациями HTML a Document Object
могут быть отнесены к объекту Document * -averse, относящемуся к готовке, в следующих случаях:
- Документ, который не имеет
Browsing Context
. - Документ, схема URL которого не является сетевой схемой.
Глубокое погружение
Согласно Недопустимый повар ie домен эта ошибка может возникать, если текущий домен будет example.com
, поэтому невозможно добавить повар ie для домена example.org
.
Например:
Пример кода:
from selenium import webdriver
from selenium.common import exceptions
session = webdriver.Firefox()
session.get("https://example.com/")
try:
cookie = {"name": "foo",
"value": "bar",
"domain": "example.org"}
session.add_cookie(cookie)
except exceptions.InvalidCookieDomainException as e:
print(e.message)
Консоль Вывод:
InvalidCookieDomainException: https://example.org/
Решение
Если вы сохранили повар ie из домена example.com
, эти сохраненные куки могут ' т быть протолкнутым Сессия веб-драйвера для любого другого домена, например example.edu
. Сохраненные куки могут быть использованы только в пределах example.com
. Кроме того, чтобы автоматически войти в систему в будущем, необходимо сохранять файлы cookie только один раз, и именно тогда пользователь вошел в систему. Перед добавлением файлов cookie необходимо перейти к тому же домену, откуда были собраны файлы cookie.
Пример
Например, вы можете сохранить куки-файлы после входа пользователя в приложение следующим образом:
from selenium import webdriver
import pickle
driver = webdriver.Chrome()
driver.get('http://demo.guru99.com/test/cookie/selenium_aut.php')
driver.find_element_by_name("username").send_keys("abc123")
driver.find_element_by_name("password").send_keys("123xyz")
driver.find_element_by_name("submit").click()
# storing the cookies
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
driver.quit()
Позже, если вы хотите, чтобы пользователь автоматически войдя в систему, вам необходимо сначала перейти к указанному c домену / URL, а затем добавить файлы cookie следующим образом:
from selenium import webdriver
import pickle
driver = webdriver.Chrome()
driver.get('http://demo.guru99.com/test/cookie/selenium_aut.php')
# loading the stored cookies
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
# adding the cookies to the session through webdriver instance
driver.add_cookie(cookie)
driver.get('http://demo.guru99.com/test/cookie/selenium_cookie.php')
Дополнительные сведения
Кажется, вы используете chrome = 77.0.3865.75 . В идеале вам необходимо убедиться, что:
Ссылка
Подробное обсуждение можно найти в: