Search code examples
google-chromeselenium

Selenium: Clear chrome cache


In my application I need a way to clear only the cache of the chrome browser before log out (except cookies - I do not want to delete cookies).

Can any one suggest me a way to click on the CLEAR DATA button in chrome. I have written the below code but the code is not working.

Configuration :

Chrome Version: Version 65.0.3325.181 (Official Build) (64-bit)

Selenium Version: 3.11.0

//Clear the cache for the ChromeDriver instance.
driver.get("chrome://settings/clearBrowserData");
Thread.sleep(10000);
driver.findElement(By.xpath("//*[@id='clearBrowsingDataConfirm']")).click();

enter image description here


Solution

  • You are using here

    driver.findElement(By.xpath("//*[@id='clearBrowsingDataConfirm']")).click();

    Unfortunately, this won’t work because the Chrome settings page uses Polymer and WebComponents, need to use query selector using the /deep/ combinator, so selector in this case is * /deep/ #clearBrowsingDataConfirm.

    Here is workaround to your problem...you can achieve the same using either one of the following...

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.testng.annotations.Test;
    
    public class ClearChromeCache {
    
        WebDriver driver;
    
        /*This will clear cache*/
        @Test
        public void clearCache() throws InterruptedException {
            System.setProperty("webdriver.chrome.driver","C://WebDrivers/chromedriver.exe");
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("disable-infobars");
            chromeOptions.addArguments("start-maximized");
            driver = new ChromeDriver(chromeOptions);
            driver.get("chrome://settings/clearBrowserData");
            Thread.sleep(5000);
            driver.switchTo().activeElement();
            driver.findElement(By.cssSelector("* /deep/ #clearBrowsingDataConfirm")).click();
            Thread.sleep(5000);
        }
    
        /*This will launch browser with cache disabled*/
        @Test
        public void launchWithoutCache() throws InterruptedException {
            System.setProperty("webdriver.chrome.driver","C://WebDrivers/chromedriver.exe");
            DesiredCapabilities cap = DesiredCapabilities.chrome();
            cap.setCapability("applicationCacheEnabled", false);
            driver = new ChromeDriver(cap);
        }
    }