Selenium WebDriver
manager().getCookies()
始终中的InternetExplorerDriver
会返回0个元素!
附:版本2.32.0.0
答案 0 :(得分:9)
如果Cookie为HTTPOnly,则无法从Javascript / Selenium
中读取它们答案 1 :(得分:2)
您确定您的网络驱动程序位于您希望设置cookie的域中吗?
getCookies
仅返回当前域的Cookie。
答案 2 :(得分:2)
Set<Cookie> allcookies = driver.manage().getCookies();
System.out.println(allcookies);
答案 3 :(得分:1)
我不明白为什么driver.manage().getCookies();
在FF和IE中总是返回大小0。
但是我发现使用executeScript
Set<Cookie> cookies = driver.manage().getCookies();
if (cookies.size() == 0) { // To support FF and IE
String cookiesString = (String) driver.executeScript("return document.cookie");
cookies = parseBrowserCookies(cookiesString);
}
private Set<Cookie> parseBrowserCookies(String cookiesString) {
Set<Cookie> cookies = new HashSet<>();
if (StringUtils.isBlank(cookiesString)) {
return cookies;
}
Arrays.asList(cookiesString.split("; ")).forEach(cookie -> {
String[] splitCookie = cookie.split("=", 2);
cookies.add(new Cookie(splitCookie[0], splitCookie[1], "/"));
});
return cookies;
}
答案 4 :(得分:0)
也许你需要先设置cookie,AFAIK webdriver总是以新鲜的会话开始。 相反,您可以尝试设置这样的用户配置文件: How to make FirefoxDriver use existing profile?
答案 5 :(得分:0)
答案 6 :(得分:0)
问题似乎出在64位驱动程序上。我已经尝试过使用32位驱动程序,并且可以工作。如果使用WebDriverManager,请执行以下操作:
WebDriverManager.iedriver().arch32().setup();
可能与之相关的另一件事(不是很确定)是在注册表级别为Internet Explorer 11进行设置,请参见Selenium IE driver information:
仅对于IE 11,您需要在目标上设置一个注册表项 计算机,以便驱动程序可以维持与实例的连接 它创建的Internet Explorer。对于32位Windows安装, 您必须在注册表编辑器中检查的密钥是 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。对于64位Windows 装置,关键是 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。请注意 FEATURE_BFCACHE子项可能存在或可能不存在,应该 如果不存在则创建。重要提示:在此注册表项中,创建一个 DWORD值,名为iexplore.exe,值为0。
答案 7 :(得分:-1)
这是你可以做的所有饼干
allCookies = driver.manage().getCookies();