您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

org.openqa.selenium.InvalidCookieDomainException:使用Selenium和WebDriver禁止文档访问Cookie

org.openqa.selenium.InvalidCookieDomainException:使用Selenium和WebDriver禁止文档访问Cookie

错误消息…

org.openqa.selenium.InvalidCookieDomainException: Document is cookie-averse

……意味着非法企图在与当前文档不同的域下设置cookie。

具体根据HTML的生活标准规范一个Document Object可被归类为在以下情况下一个Cookie规避文档对象:

对于无效的cookie域,当您访问不喜欢cookie的文档(例如本地磁盘上的文件)时,可能会发生此错误

举个例子:

        from selenium import webdriver
    from selenium.common import exceptions

    session = webdriver.Firefox()
    session.get("file:///home/jdoe/document.html")
    try:
        foo_cookie = {"name": "foo", "value": "bar"}
        session.add_cookie(foo_cookie)
    except exceptions.InvalidCookieDomainException as e:
        print(e.message)
InvalidCookieDomainException: Document is cookie-averse

如果您已存储来自域的example.comcookie, 通过webdriver会话将这些存储的cookie 推送到任何其他不同的域,例如example.edu。存储的Cookie只能在中使用example.com。此外,要在将来自动登录用户,您只需要存储一次Cookie,即用户登录后的时间。在添加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()

稍后,如果您希望用户自动登录,则需要先浏览到特定的域/ 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')
其他 2022/1/1 18:23:02 有471人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶