在 Selenium Chrome 驱动程序中禁用缓存

2023-11-25

我使用 Selenium ChromeDriver 来测量网页的性能。但默认情况下 Chrome 驱动程序缓存是启用的。

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

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

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

Thanks!


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

可以使用以下命令复制相同的行为Chrome 开发者工具协议Selenium 4 中的支持。

我们可以用'网络.setCacheDisabled'来自 Chrome DevTools 协议

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

cacheDisabled
    boolean

    Cache disabled state.

示例来自 DevTools 的 Selenium 测试

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

您可以参考硒存储库对于所有示例测试开发工具/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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Selenium Chrome 驱动程序中禁用缓存 的相关文章

随机推荐

  • 如何使用 HTMLAgilityPack 修复 html 标签(缺少 标签)

    我有一个 html div h1 hello Hi h1 div div hi div 所需输出 div h1 hello h1 div div p hi p div 使用 HTML 敏捷包是否可以解决此类类似的缺少结束和开始标签的问题 图
  • 如何在 postgresql 中进行透视

    我有如下表 我想改造它们 year month week type count 2021 1 1 A 5 2021 1 1 B 6 2021 1 1 C 7 2021 1 2 A 0 2021 1 2 B 8 2021 1 2 C 9 我想
  • SQL Server 字符串与 Null 的连接

    我正在跨字段创建一个计算列 其中一些字段可能为空 问题是 如果这些字段中的任何一个为空 则整个计算列也将为空 我从 Microsoft 文档中了解到 这是预期的 可以通过设置 SET CONCAT NULL YIELDS NULL 关闭 但
  • C# 从 URI 字符串获取文件名

    我有这个方法可以从字符串 URI 中获取文件名 我能做些什么来使它更强大 private string GetFileName string hrefLink string parts hrefLink Split string fileN
  • 为什么 .* 不消耗此 Perl 正则表达式中的整个字符串?

    为什么第一个打印语句没有输出我期望的结果 first This is a test string sec This is a test string 由于 和 都是贪婪的 为什么第一个匹配中的内部 即 内部的 不消耗整个字符串 use st
  • “Decimal”类型的对象不可 JSON 序列化

    由于客户函数错误 Lambda 执行失败 状态为 200 Decimal 类型的对象不可 JSON 序列化 我在以下链接中浏览了所有现有的解决方案 但没有任何对我有用 我究竟做错了什么 Python JSON 序列化 Decimal 对象
  • python asyncio如何读取StdIn并写入StdOut?

    我需要异步读取 StdIn 以获取消息 由 r n 终止的 json 并在处理异步后将更新的消息写入 StdOut 目前我正在同步执行此操作 如下所示 class SyncIOStdInOut def write self payload
  • 在 Linux 上使用 mkdir 作为基于文件的锁定是一个好习惯吗?

    我想在 Linux 上的 perl 程序中快速实现某种锁定 它可以在不同进程之间共享 所以我用了mkdir作为原子操作 它返回1如果该目录不存在并且0如果是的话 我删除了关键部分之后的目录 现在 有人向我指出 这通常不是一个好的做法 独立于
  • Apple Watch OS 2 上是否可以在没有伴随声音的情况下触发触觉反馈

    假设用户没有将手表声音静音 Apple Watch 应用程序是否可以在没有伴随声音的情况下触发触觉反馈 即振动 这与接收由手表自动处理的通知不同 在本例中 我使用手表应用程序调用触觉反馈 像这样 WKInterfaceDevice curr
  • 在WebAPI中绑定抽象动作参数

    我遇到的情况是 我需要将传入的 HTTP POST 请求与正文中的数据绑定到具体类型 具体取决于ProductType数据中的分母 这是我的 Web API 2 操作方法 HttpPost Route public HttpResponse
  • Perl:为什么在循环内声明(我的)变量速度较慢?

    从口译员的视角来看 以下程序之间有什么区别 usr bin perl w use strict for 1 10000000 my jimmy 2 and usr bin perl w use strict my jimmy for 1 1
  • iOS 未收到通过 API 发送的 Firebase 推送通知

    我正在使用 Google 的 Firebase Cloud Messaging 将推送通知发送到我的 iOS 和 Android 应用程序 通过云消息控制台发送的推送通知按预期工作 但是当我通过 API 发送推送通知时 iOS 应用程序仅在
  • jquery:在图像后淡入淡出

    我有一个包含 10 张图像的页面 我想在图像下载后将它们逐个淡入淡出 如何检测图像已加载并准备好显示 我应该循环加载加载的图像 fadeIn 并一旦 fadeIn 等待下一个加载吗 只需在图像上使用 load 事件即可 例如 some im
  • 重写方法上的 Java Class.getMethods() 行为

    在使用 Java 反射编写一个简单的 JSON 序列化程序时 我对 Class getMethods 的行为感到措手不及 如果重写方法的返回类型扩展了被重写方法的返回类型 则 Java Class getMethods 似乎会返回重写方法和
  • 如何使用 Apache Batik 将一张 SVG 图像叠加到另一张 SVG 图像上?

    我有 2 个 SVG 文件需要使用 Batik 进行叠加 第一个文件用作背景图像 大小为 308 像素 x 308 像素 而第二个文件 260 像素 x 260 像素 是必须居中的前景图像 即位于背景图像的中心 我希望将操作结果保存在第三个
  • 为什么全局匿名联合需要声明为静态?

    C 0x 草案 9 5 6 在命名命名空间或全局命名空间中声明的匿名联合应声明为静态的 为什么是这样 假设匿名联合不需要声明为静态 并且编译器遇到这两个翻译单元 预处理后 File1 union int a char b Further c
  • Microsoft Visual Studio:opendir() 和 readdir(),如何实现?

    我之前在我的 Dev cpp 中使用过这种代码 if dh opendir folder false while file readdir dh false do my stuff closedir dh 但现在我正在使用 MSVC 我不知
  • CSS边框颜色分为4种颜色

    有什么方法可以让 CSS 边框的一侧有 4 种不同的颜色吗 我目前有 header border color 88a9eb 我想要有 4 种纯色边框 每种颜色有 25 的分割 这可能吗 我想制作一个完整的版本 中间没有白色的部分 您可以使用
  • 如何从另一个 job2 访问 Hudson job1 工件?

    我们在哈德逊的一个项目中有一份制作工作和一份夜间工作 生产作业需要从特定的夜间构建 作为参数提供 中提取一些工件 谁能帮助我们提示如何实现这一目标 The 复制神器插件似乎能够做到这一点 另一种方法可能是通过获取工件 http server
  • 在 Selenium Chrome 驱动程序中禁用缓存

    我使用 Selenium ChromeDriver 来测量网页的性能 但默认情况下 Chrome 驱动程序缓存是启用的 Option disable application cache现已弃用https code google com p