[英]Unable to set cookies in Selenium Webdriver
我嘗試在使用webdriver打開鏈接之前將Cookie添加到鏈接中,但它一直顯示以下錯誤:
org.openqa.selenium.UnableToSetCookieException:無法設置cookie(警告:服務器未提供任何堆棧跟蹤信息)
請在下面找到我的代碼:
System.setProperty("webdriver.edge.driver","C:\\Program Files\\Latest Webdriver\\MicrosoftWebDrive.exe" );
EdgeDriver = new EdgeDriver();
Thread.sleep(2000);
Cookie cookie = new Cookie("Testing", "11111");
EdgeDriver.manage().addCookie(cookie);
EdgeDriver.get("https://www.google.ca/?gws_rd=ssl"); // The link is an example
請提供相關解決方案的幫助。
您要先創建cookie,然后再導航到該站點。 如果您嘗試在域www.example.com上創建cookie,那么您將希望導航到該域上的某個頁面,創建cookie,然后開始測試。
從我的閱讀中,最好的方法是導航到您知道該域中不存在的某個頁面,例如www.example.com/this404page,然后創建cookie。 由於它是一個錯誤頁面,並且應該不包含太多內容,因此加載速度應該更快。 在404頁上創建cookie后,開始測試。
您無法執行此操作,因為WebDriver規范要求您將瀏覽器置於要為其設置Cookie的域上。
提到的解決方法是在設置cookie之前先轉到頁面。 但這會導致一些問題:
不幸的是,這阻止了2個關鍵用例:
Webdriver規范顯然需要考慮到這一點。 我在這里打開了一個問題:
https://github.com/w3c/webdriver/issues/1238
給它一些票。 所有的瀏覽器都應該開始處理這種情況。
首先導航到URL,然后嘗試添加cookie,請嘗試以下代碼:
System.setProperty("webdriver.edge.driver","C:\\Program Files\\Latest Webdriver\\MicrosoftWebDrive.exe" );
EdgeDriver = new EdgeDriver();
Thread.sleep(2000);
Cookie cookie = new Cookie("Testing", "11111");
EdgeDriver.manage().addCookie(cookie);
EdgeDriver.get("https://www.google.ca/?gws_rd=ssl"); // The link is an example
用以下代碼替換您的代碼:
System.setProperty("webdriver.edge.driver","C:\\Program Files\\Latest Webdriver\\MicrosoftWebDrive.exe" );
EdgeDriver = new EdgeDriver();
Thread.sleep(2000);
EdgeDriver.get("https://www.google.ca/?gws_rd=ssl"); // The link is an example
Cookie cookie = new Cookie("Testing", "11111");
EdgeDriver.manage().addCookie(cookie);
在導航到域之前添加cookie稱為無域cookie,我認為這是不可能的。
我還沒有找到在網址前刪除Cookie的方法,但是我認為以下情況可能會幫助您-
以防萬一,這很簡單,我不需要創建工廠類,只需從站點加載根頁面(不需要cookie)
首先如上所述收集cookie
pickle.dump(driver.get_cookies(), open("ChromeCookies.pkl", "wb"))
然后獲取不需要cookie的網站根目錄(以我為例)
driver.get(url_root)
然后執行cookie加載
for cookie in pickle.load(open("ChromeCookies.pkl", "rb")):
driver.add_cookie(cookie)
然后轉到我實際上想要訪問的頁面
driver.get(url_not_root_demanding_cookie_which_is_now_there)
如果此方法有問題,請發表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.