我正在使用Selenium webDriver,我正在使用方法driver.manage().deleteAllCookies();
但是这种方法是删除当前域中的所有cookie,除了一个。奇怪!!
我现在正在使用Chrome。
有人可以建议可能的原因以及我们如何删除当前域名的所有Cookie?
答案 0 :(得分:1)
driver.manage().deleteAllCookies();
这只会删除当前域中的Cookie。它不会删除任何其他域的cookie。
因此,如果您需要删除这些域的Cookie,则需要先浏览该域中的某个页面,然后再次调用deleteAllCookies
方法
答案 1 :(得分:0)
我必须等待所有ajax操作完成,然后调用deleteAllCookies()
,然后它才能工作。
public void ajaxWait(long seconds) {
try{
while(!waitForJSandJQueryToLoad()) {
try {
Thread.sleep(1000);
seconds -= 1;
if (seconds <= 0) {
return;
}
} catch (InterruptedException var4) {
var4.printStackTrace();
}
}
} catch(Exception e){
e.printStackTrace();
}
}
public boolean waitForJSandJQueryToLoad() {
WebDriverWait wait = new WebDriverWait(driver, DefaultAjaxWait);
// wait for jQuery to load
ExpectedCondition<Boolean> jQueryLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
return ((Long)((JavascriptExecutor)driver).executeScript("return jQuery.active") == 0);
}
catch (Exception e) {
// no jQuery present
e.printStackTrace();
return true;
}
}
};
// wait for Javascript to load
ExpectedCondition<Boolean> jsLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("return document.readyState")
.toString().equals("complete");
}
};
return wait.until(jQueryLoad) && wait.until(jsLoad);
}
答案 2 :(得分:0)
我有同样的问题。我想退出系统。我以为我已经通过调用删除了所有cookie:
driver.manage().deleteAllCookies();
但是,语句完成后,系统将我导航到主页。
对我来说,解决方案是导航到登录页面,然后再次删除cookie:
driver.get(target_url);
driver.manage().deleteAllCookies();