【发布时间】:2016-01-03 10:09:28
【问题描述】:
我正在使用 Java 编程语言进行 Selenium WebDriver 自动化。在我的测试套件中,它会启动一次浏览器窗口并执行所有测试。我想在不重新启动浏览器的情况下运行一些测试之前清除浏览器缓存。有没有可以达到目的的命令/功能?谢谢。
【问题讨论】:
标签: java selenium-webdriver browser-cache
我正在使用 Java 编程语言进行 Selenium WebDriver 自动化。在我的测试套件中,它会启动一次浏览器窗口并执行所有测试。我想在不重新启动浏览器的情况下运行一些测试之前清除浏览器缓存。有没有可以达到目的的命令/功能?谢谢。
【问题讨论】:
标签: java selenium-webdriver browser-cache
对于 IE
DesiredCapabilities ieCap = DesiredCapabilities.internetExplorer();
ieCap.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
对于 Chrome:
https://code.google.com/p/chromedriver/issues/detail?id=583
要删除 cookie:
driver.manage().deleteAllCookies();
【讨论】:
DesiredCapabilities 已被弃用
至少在 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"])
【讨论】:
这是我在 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。希望这会有所帮助! :)
【讨论】:
以下代码基于@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;
【讨论】:
WebDriver driver = new ChromeDriver();
driver.manage().deleteAllCookies();
driver.get("chrome://settings/clearBrowserData");
driver.findElement(By.xpath("//settings-ui")).sendKeys(Keys.ENTER);
【讨论】:
import org.openqa.selenium.Keys;
您需要在较新版本中导入 Keys 并将最后一行更改为 findElement by xpath
WebDriver driver = new ChromeDriver();
driver.manage().deleteAllCookies();
driver.get("chrome://settings/clearBrowserData");
driver.findElement(By.xpath("//settings-ui")).sendKeys(Keys.ENTER);
【讨论】:
在谷歌浏览器上你可以使用这个脚本:
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);
【讨论】: