簡體   English   中英

在使用 Java 運行一些 Selenium WebDriver 測試之前清除緩存

[英]Clear cache before running some Selenium WebDriver tests using Java

我正在使用 java 編程語言進行 Selenium WebDriver 自動化。 在我的測試套件中,啟動瀏覽器 window 一次並執行所有測試。 我想在不重新啟動瀏覽器的情況下運行一些測試之前清除瀏覽器緩存。 是否有任何命令/功能可以達到目的? 謝謝。

這是我在 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。 希望這會有所幫助! :)

IE瀏覽器

DesiredCapabilities ieCap =  DesiredCapabilities.internetExplorer();
ieCap.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);

對於鉻:

https://code.google.com/p/chromedriver/issues/detail?id=583

要刪除 cookie:

driver.manage().deleteAllCookies();

至少在 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"])

以下代碼基於@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 並通過 xpath 將最后一行更改為 findElement

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);

我發現為自己工作的是添加鉻標志:

--disk-cache-size=0

不確定它是否清除緩存,但在我的案例中,任何與緩存相關的問題都消失了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM