Chromedriver 离线网络条件似乎不会阻止 Service Worker 获取

2024-06-01

我有一个带有 Service Worker 的站点,它在安装时缓存一些静态资源。其他一些资源不会被缓存,例如数据请求。因此,如果您在 Chrome 中使用离线模式测试站点,大部分页面都可以正确显示,但没有数据,并且由于这些失败的请求,控制台中会出现一些错误。到目前为止还好。但后来我用 Selenium 和 Chromedriver 创建了一个测试。我加载该网站,访问主页,Service Worker 已正确安装,然后我尝试使用以下方式模拟离线:

chromeDriver.NetworkConditions = new ChromeNetworkConditions() { Latency = TimeSpan.FromSeconds(1000), DownloadThroughput = 1, UploadThroughput = 1, IsOffline = true };

这似乎工作正常,就好像在测试中我尝试导航到此后的任何页面一样,它失败并显示“没有互联网可用”消息。此外,正如预期的那样,由于 Service Worker 及其缓存的资源,我的网站加载良好。

但奇怪的是,该网站能够加载所有内容,甚至是数据等非缓存内容。所有站点的获取都被 Service Worker 拦截,因此离线模式似乎不会影响 Service Worker 的获取,即能够保持离线状态向服务器获取资源。

(注意:尽管测试 google chrome 似乎是离线的(例如,它无法导航到 www.google.com),但如果我打开“网络”或“应用程序”选项卡,我看不到该选项已选中。如果我手动检查它们都按预期运行:Service Worker 无法获取非缓存资源)

更新 1:我尝试通过 Web Sockets 直接与 Chrome 开发工具交互(我使用过这个库:https://github.com/MasterDevs/ChromeDevTools https://github.com/MasterDevs/ChromeDevTools)结果是一样的,Service Worker 请求在离线状态下工作得很好)


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chromedriver 离线网络条件似乎不会阻止 Service Worker 获取 的相关文章

随机推荐