javascript - 在 Headless Chrome 中安装 Service Worker(通过 puppeteer)

标签 javascript google-chrome google-chrome-devtools puppeteer google-chrome-headless

我有一个注册的 service worker

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/service-worker.bundle.js').then(registration => {
        console.log('Service worker was registered');
    }).catch(error => {
        console.log('Registration failed: ', error);
    });
}

实际的 service worker 正在使用常规的 console.log() 调用记录其 installactivate 事件,所有这些都按预期工作。

但是,当涉及到测试自动化时,Headless Chrome/puppeteer 解决方案没有按预期工作,service worker 没有安装(安装事件不会发生)。所以,问题是,是否有任何特殊的方法可以使用 Headless Chrome/puppeteer 的服务人员测试页面?

puppeteer 代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ args: ['--no-sandbox']});
  const page = await browser.newPage();
  page.on('console', msg => console.log('PAGE LOG:', msg.text()));

  await page.goto('https://***.com', { waitUntil: 'networkidle0' });
  await page.waitFor(1*4000);
  console.log('Before reload');
  await page.reload({ waitUntil: 'networkidle0' });
  await page.screenshot({path: 'public/vidi.png'});
  await browser.close();
})();

链接:

最佳答案

是的,

const browser = await puppeteer.launch({
    args: ['--enable-features=NetworkService'],
    headless: true,
    ignoreHTTPSErrors: true,
  });

--enable-features=NetworkService 启用 service worker(实验性)并且在 puppeteer 上下文中(通过 file:///服务)需要 ignoreHTTPSErrors 来克服 service worker 的 https 要求

关于javascript - 在 Headless Chrome 中安装 Service Worker(通过 puppeteer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50073334/

相关文章:

javascript - angularjs ui-select-choices 下拉字母顺序取决于给定的输入

javascript - HTML//jQuery - 重新加载 10 秒后静音所有音频

javascript - 我可以为我的网站访问者启用 JavaScript 吗?

google-chrome - 拦截即时生成的代理证书会引发浏览器错误

google-chrome - 取消缩小 chrome 的堆快照

javascript - Javascript 对象字面量中属性求值的顺序

css - 使用 chrome 开发者工具注入(inject) CSS?

javascript - 如何获取最新的 Chrome(版本 55)以允许混合内容?

google-chrome - Chrome 'paused in debugger'问题

google-chrome-devtools - 如何在 Chrome 中调试长脚本?