禁用硒铬驱动程序中的缓存

我正在使用Selenium ChromeDriver来衡量网页的性能。但默认情况下,Chrome 中的驱动程序缓存处于启用状态。

选项现已弃用,https://code.google.com/p/chromium/issues/detail?id=447206--disable-application-cache

此外,我每次都可以初始化驱动程序的新实例,但这不是很方便。

我的问题有没有办法正确禁用缓存?

谢谢!


答案 1

在Chrome开发工具“网络”选项卡中,我们可以通过单击“禁用缓存”复选框来禁用缓存。

可以使用Selenium 4中的Chrome DevTools协议支持复制相同的行为。

我们可以使用Chrome DevTools协议中的'Network.setCacheDisabled'

Toggles ignoring cache for each request. If true, cache will not be used.
parameters

cacheDisabled
    boolean

    Cache disabled state.

示例来自 DevTools 的 Selenium Test

import org.openqa.selenium.devtools.network.Network;

 @Test
  public void verifyCacheDisabledAndClearCache() {

    ChromeDriver driver = new ChromeDriver();
    DevTools devTools = driver.getDevTools();
    devTools.createSession();
   

    devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.of(100000000)));

    driver.get("http://www.google.com");

    devTools.send(Network.setCacheDisabled(true));

    devTools.addListener(Network.responseReceived(), responseReceived -> assertEquals(false, responseReceived.getResponse().getFromDiskCache()));

   driver.get("http://www.google.com");

    devTools.send(Network.clearBrowserCache());

  }

getFromDiskCache() -- 指定请求是否从磁盘缓存中提供。

对于上面的代码,它将是false

您可以参考硒存储库以获取所有示例测试 devtools/ChromeDevToolsNetworkTest.java

对于开发工具 Maven 依赖项

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-devtools -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-devtools</artifactId>
    <version>4.0.0-alpha-6</version>
</dependency>

答案 2

如您所见,该选项现已弃用。--disable-application-cache

您可以使用并将其设置为 。这将强制磁盘缓存使用的最大磁盘空间为零。尽管它可能在某些较旧的浏览器上不起作用。我成功地为火狐v67.0.1测试了它--disk-cache-sizezero

有关更多详细信息,请参阅此命令列表:https://peter.sh/experiments/chromium-command-line-switches/


推荐