无法在Selenium webdriver

时间:2017-09-15 13:07:26

标签: java selenium cookies webdriver

我正在使用Selenium webDriver,我正在使用方法driver.manage().deleteAllCookies(); 但是这种方法是删除当前域中的所有cookie,除了一个。奇怪!!

我现在正在使用Chrome。

有人可以建议可能的原因以及我们如何删除当前域名的所有Cookie?

3 个答案:

答案 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();