Selenium无法使用我自己的Cookie使用WebDriver打开页面

时间:2019-03-30 15:00:11

标签: java selenium chrome-web-driver

我正在尝试设置一些我已经拥有的cookie,以使用Java中的ChromeWebDriver和Selenium处理对网站的请求:

{}

但是我遇到了以下异常: 线程“主要” org.openqa.selenium.UnableToSetCookieException中的异常:无法设置cookie。当然,我正在尝试使用真正的cookie,它们在浏览器中也能正常工作...

4 个答案:

答案 0 :(得分:0)

首先导航到URL,然后尝试添加cookie,请尝试以下顺序:

System.setProperty("webdriver.chrome.driver", "/Users/test/Desktop/Configs/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.manage().addCookie(new Cookie("mycookie","test"));

更新:     添加cookie后,我们可以通过显示所有cookie进行检查。

Set<Cookie> cookiesList =  driver.manage().getCookies();
for(Cookie getcookies :cookiesList) {
   System.out.println(getcookies );
}

答案 1 :(得分:0)

硒不能将Cookie添加到任意域。 Cookie的域必须等于当前浏览上下文的活动文档的域。 W3C WebDriver规范中对此行为进行了描述,并由所有主要的浏览器供应商实施。参见:https://w3c.github.io/webdriver/#add-cookie

作为一种解决方法,您可以先导航到该域上的任何页面,然后添加该域的cookie。

答案 2 :(得分:0)

我同意Ros5292的答案。

好的,现在满足您的要求,您需要按如下所述打开URL后删除cookie:

driver.get("https://www.google.com/");
driver.manage().deleteAllCookies();
driver.manage().addCookie(new Cookie("mycookie","test"));
Set<Cookie> coo = driver.manage().getCookies(); 
coo.forEach(System.out::println); 

可选:

还有一件事,如果您想查看通过显式添加Cookie所做的更改,则需要刷新页面(添加后立即添加):

driver.get("https://www.google.com/");
driver.manage().deleteAllCookies();
driver.manage().addCookie(new Cookie("mycookie","test"));
driver.navigate().refresh();

答案 3 :(得分:0)

如上所述,驱动程序当前URL必须与cookie在同一域中。除此之外,您可以像使用普通浏览器一样,使用javascript使用Selenium设置cookie:

driver.executeScript("document.cookie ="'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'");

如果要将cookie添加到cookie列表中,可以执行以下操作:

driver.executeScript("document.cookie ="document.cookie + 'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'");