Java 无法在Selenium Webdriver中设置Cookie
在使用webdriver打开链接之前,我试图将cookie添加到链接中,但它始终给我以下错误: org.openqa.selenium.UnableToSetCookieException:无法设置cookie(警告:服务器未提供任何堆栈跟踪信息) 请在下面找到我的代码:Java 无法在Selenium Webdriver中设置Cookie,java,testing,cookies,selenium-webdriver,microsoft-edge,Java,Testing,Cookies,Selenium Webdriver,Microsoft Edge,在使用webdriver打开链接之前,我试图将cookie添加到链接中,但它始终给我以下错误: org.openqa.selenium.UnableToSetCookieException:无法设置cookie(警告:服务器未提供任何堆栈跟踪信息) 请在下面找到我的代码: System.setProperty("webdriver.edge.driver","C:\\Program Files\\Latest Webdriver\\MicrosoftWebDrive.exe" ); EdgeDr
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称为无域cookie,我认为这是不可能的 我还没有找到在url之前删除cookie的方法,但我认为下面的场景可能会帮助您-
在导航到站点之前,您正在创建cookie。如果您试图在域www.example.com上创建cookie,那么您可能希望导航到该域上的某个页面,创建cookie,然后启动测试
从我前一段时间的阅读中,最好的方法是导航到您知道域中不存在的某个页面,例如www.example.com/this404page,然后创建cookie。它应该加载得更快,因为它是一个错误页面,不应该包含太多内容。在404页面上创建cookie后,开始测试。首先导航到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);
您无法执行此操作,因为WebDriver规范要求您将浏览器登录到您试图为其设置Cookie的域 前面提到的解决方法是在设置cookie之前转到页面。但这会引起一些问题: 不幸的是,这阻止了两个关键用例:
给它一些选票。所有浏览器都应该开始采用一种方法来处理这个问题 如果这更简单,我不需要创建工厂类,只需从站点加载根页面(不需要cookie) 首先收集cookie,如上所述
pickle.dump(driver.get_cookies(), open("ChromeCookies.pkl", "wb"))
然后获取不需要cookie的网站根目录(在我的例子中)
然后执行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)
如果这种方法存在明显的问题,但我也犯了同样的错误,请发帖子……)对我来说,这就是解决办法。谢谢你,杰夫!
driver.get(url_not_root_demanding_cookie_which_is_now_there)