在 javascript 执行期间测试 Internet 连接丢失
Posted
技术标签:
【中文标题】在 javascript 执行期间测试 Internet 连接丢失【英文标题】:Testing loss of internet connection during javascript execution 【发布时间】:2017-04-25 16:54:14 【问题描述】:我的问题
我希望测试脚本在执行过程中如何处理丢失互联网连接的情况。在较低级别,我只需要在脚本中的某个点之后导致一些网络请求失败。
我试图在不模拟任何 javascript 单元的情况下尽可能地保持这个测试是端到端的。
我对如何实现这一目标的想法
Chrome 在其开发工具的“网络”选项卡下有一个有用的切换开关,可以模拟互联网连接中断。我想从我正在执行的脚本中切换它(以类似于debugger
在源选项卡下触发断点的方式)。
我怀疑这并不容易,因为如果网页可以触发它,它会造成严重的安全漏洞。但是,如果有任何方法可以将 Chrome 破解为可能的状态,可能会使用扩展程序或 Chromium,我会全力以赴。
有没有办法从 javascript 切换 Chrome 的“离线”开发工具?
如果不这样做,还有其他方法可以模拟连接丢失/导致网络请求从 javascript 失败吗? (顺便说一句,我没有嫁给 Chrome)
【问题讨论】:
【参考方案1】:您可以使用 debugger
权限创建自定义 chrome 扩展,然后将 attach 设置为选项卡。然后在该选项卡上调用 Network.enable,然后启动 emulating network conditions(例如下线)
您可以使用onMessageExternal 与您的自定义扩展程序进行通信(例如,告诉它在特定时间下线)。
【讨论】:
【参考方案2】:也许也试试这个?
setInterval("stop()", 100);
根据docs,window.stop()
停止加载当前加载的资源,例如按下“停止”按钮。在循环中重复执行此操作会模拟网络丢失。
如果您想以编程方式断开连接并恢复连接,可能类似于
var interval = setInterval("stop()", 100);
// To restore connectivity
clearInterval(interval);
【讨论】:
【参考方案3】:更简单的方法是在Sources
选项卡的关键点设置断点,然后在Network
选项卡中手动下线。
【讨论】:
以上是关于在 javascript 执行期间测试 Internet 连接丢失的主要内容,如果未能解决你的问题,请参考以下文章
进程间通信 IPC(Inter-Process Communication)
操作系统之三Linux下进程间通信-IPC(Inter-Process Communication)