我正在使Web浏览器自动化以测试我的要求(自动填充/完成,特别是与持久性相关)。清除Cookie与清除浏览器历史记录不同,对吗?是否可以自动以无头模式清除浏览器历史记录?经过如此多的网上冲浪后,我的假设是事实并非如此。 (我读过一篇文章,由于安全原因,不允许以无头模式自动清除浏览历史记录)。
此外,从硒Web驱动程序启动以测试案例的自动浏览器版本在注销帐户后不会立即存储任何缓存。假设我登录并注销了我的帐户。我希望selenium保留我之前输入的用户名,当我刷新页面并键入它的几个开头字母时会自动填充(这在普通浏览器中会发生,但在自动浏览器版本中不会发生)。能做到吗? 预先感谢
我已经设法使用阴影DOM元素清除UI模式下chrome的浏览历史记录。这种方法在用户界面模式下(即没有无头模式)可以完美地工作,但是我的问题是要在无头测试模式下实现它(如果建议的方法也适用于其他浏览器,那就太好了)。对这个问题有任何建议或解决方法吗?
public void clearBrowsingHistory() throws Exception {
WebDriverWait wait = new WebDriverWait(driver, 15);
driver.get("chrome://settings/clearBrowserData");
// Get shadow root elements
WebElement shadowRoot1 = expandRootElement(driver.findElement(By.xpath("/html/body/settings-ui")));
WebElement root2 = shadowRoot1.findElement(By.cssSelector("settings-main"));
WebElement shadowRoot2 = expandRootElement(root2);
WebElement root3 = shadowRoot2.findElement(By.cssSelector("settings-basic-page"));
WebElement shadowRoot3 = expandRootElement(root3);
WebElement root4 = shadowRoot3
.findElement(By.cssSelector("#advancedPage > settings-section > settings-privacy-page"));
WebElement shadowRoot4 = expandRootElement(root4);
WebElement root5 = shadowRoot4.findElement(By.cssSelector("settings-clear-browsing-data-dialog"));
WebElement shadowRoot5 = expandRootElement(root5);
WebElement root6 = shadowRoot5
.findElement(By.cssSelector("cr-dialog div[slot ='button-container'] #clearBrowsingDataConfirm"));
root6.click();
wait.until(ExpectedConditions.invisibilityOf(root6));
}