簡體   English   中英

Selenium Chromedriver 添加 cookie - 無效域錯誤

[英]Selenium Chromedriver add cookie - invalid domain error

我正在嘗試存儲和上傳我通過 selenium 從網頁中檢索的 cookie。

我是餅干的新手,所以請告訴我我做錯了什么。 我在嘗試學習。

我用硒打開一個頁面,手動登錄,執行一些操作然后等待..(我的代碼設置為在 30 秒后獲取 cookie)

print "adding cookies now"
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)

之后,我的 cookies.pkl 文件看起來像這樣:

(lp0
(dp1
Vdomain
p2
V.twitter.com
p3
sVsecure
p4
I00
sVvalue
p5
V"v3:1484006785862560132892059"
p6
sVexpiry
p7
F1531267585.126113
sVpath
p8
# more lines

在此log_in_and_store() ,我嘗試在加載此 cookie 時使用 selenium 重新打開頁面。 如果操作正確,它應該會打開我離開的頁面! 不是登錄頁面。

當我嘗試像這樣將我的 cookie 上傳到網頁時:

driver.get('http://www.website.com')
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    print cookie
    driver.add_cookie(cookie)

add_cookies 拋出此錯誤:

selenium.common.exceptions.WebDriverException:消息:無效的 cookie 域:無效域:“.twitter.com”(會話信息:chrome=55.0.2883.95)(驅動程序信息:chromedriver=2.24.417412(ac882d3ce7c0d99292439bf305a6f),cc8005a6f X 10.12.1 x86_64)

我已經嘗試過了,所以請不要將我鏈接到它( 即使我在正確的域中,Selenium addCookie 也獲得了無效的 Cookie 域異常

我還嘗試過更改 chromedriver 版本,更改我的代碼一百萬次並將我的頭撞在牆上。 這些都沒有用。

請幫忙,非常感謝

我在 Py selenium 中也遇到了這個錯誤。

解決方案是:首先訪問您嘗試添加其 cookie 的網站的主頁。

    # first visit home page
    url = "https://www.website.com"
    driver.get(url)

    # add cookies from pickled-txt or a txt file
    cookies = pickle.load(open("cookies.pkl", "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)

    # visit again and you shall see your account logged in
    url = "https://www.website.com"
    driver.get(url)

原因是:

  1. 帶有默認 url data: Selenium webdriver init data: .
  2. add_cookie 要求當前 url 在 cookie 的域模式下。
  3. data:不會匹配任何 cookie 域

因此,您會收到invalid cookie domain錯誤。

我對這個錯誤感到非常焦慮,就像其他答案建議我們首先必須加載頁面,然后我們必須加載 cookie,然后再次加載頁面,瞧。

import pickle
from selenium import webdriver

def save_cookie(driver):
    with open("cookie", 'wb') as filehandler:
        pickle.dump(driver.get_cookies(), filehandler)
def load_cookie(driver):
     with open("cookie", 'rb') as cookiesfile:
         cookies = pickle.load(cookiesfile)
         for cookie in cookies:
             print(cookie)
             driver.add_cookie(cookie)

driver = webdriver.Chrome(ChromeDriverManager().install())
url = 'https://www.example.com'
driver.get(url)
load_cookie(driver)
# Do you task here 
save_cookie(driver)
driver.quit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM