在使用Java运行某些Selenium WebDriver测试之前清除缓存

时间:2015-10-06 13:08:59

标签: java selenium-webdriver browser-cache

我正在使用java编程语言开发Selenium WebDriver自动化。在我的测试套件中,启动浏览器窗口一次并执行所有测试。我想在不重新启动浏览器的情况下运行某些测试之前清除浏览器缓存。有没有任何命令/功能可以达到目的?感谢。

6 个答案:

答案 0 :(得分:1)

至少在Chrome浏览器中,我坚信如果您隐身了,就不必清理Cookie。您可以按照以下方式设置选项(:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def _options():
    options = Options()
    options.add_argument('--ignore-certificate-errors')
    #options.add_argument("--test-type")
    options.add_argument("--headless")
    options.add_argument("--incognito")
    options.add_argument('--disable-gpu') if os.name == 'nt' else None # Windows workaround
    options.add_argument("--verbose")
    return options

并这样拨打电话:

with webdriver.Chrome(options=options) as driver:
    driver.implicitly_wait(conf["implicitly_wait"])
    driver.get(conf["url"])

答案 1 :(得分:1)

    WebDriver driver = new ChromeDriver();
    driver.manage().deleteAllCookies();
    driver.get("chrome://settings/clearBrowserData");
    driver.findElement(By.xpath("//settings-ui")).sendKeys(Keys.ENTER);

答案 2 :(得分:0)

这是我在Python中使用的:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('chrome://settings/clearBrowserData')
driver.find_element_by_xpath('//settings-ui').send_keys(Keys.ENTER)

您可以尝试将它们转换为Java。希望这会有所帮助! :)

答案 3 :(得分:0)

以下代码基于@An Khang的答案。并且它在Chrome 78上正常运行。

ChromeDriver chromeDriver = new ChromeDriver();

    chromeDriver.manage().deleteAllCookies();
    chromeDriver.get("chrome://settings/clearBrowserData");
    chromeDriver.findElementByXPath("//settings-ui").sendKeys(Keys.ENTER);

    return chromeDriver;

答案 4 :(得分:0)

import org.openqa.selenium.Keys;

您需要在较新版本中导入 Keys 并将最后一行更改为通过 xpath 查找元素

WebDriver driver = new ChromeDriver();

driver.manage().deleteAllCookies();
driver.get("chrome://settings/clearBrowserData");
driver.findElement(By.xpath("//settings-ui")).sendKeys(Keys.ENTER);

答案 5 :(得分:0)

在谷歌浏览器上你可以使用这个脚本:

        driver.get("chrome://settings/clearBrowserData");       
        JavascriptExecutor jse = (JavascriptExecutor)driver;
        WebElement clearData =  (WebElement) jse.executeScript("return document.querySelector(\"body > settings-ui\").shadowRoot.querySelector(\"#main\").shadowRoot.querySelector(\"settings-basic-page\").shadowRoot.querySelector(\"#basicPage > settings-section:nth-child(8) > settings-privacy-page\").shadowRoot.querySelector(\"settings-clear-browsing-data-dialog\").shadowRoot.querySelector(\"#clearBrowsingDataConfirm\")");
        ((JavascriptExecutor)driver).executeScript("arguments[0].click();", clearData);