在puppeteer中设置特定的chrome标志(启用和禁用)

时间:2018-05-30 14:58:55

标签: google-chrome automation flags puppeteer

我试图在测试中添加Chrome浏览器的特定标志(在" chrome:// flags /"中找到的标志)。

我试图启用以下标志:

  • "#启用-webgl的草稿的扩展"
  • "#共享阵列缓冲器"

并禁用此项:

  • "#启用-ASM-webassembly"
常规chrome命令行中的

如下所示:

"--flag-switches-begin --enable-webgl-draft-extensions --enable-features=SharedArrayBuffer --disable-features=AsmJsToWebAssembly --flag-switches-end"

如果我在

中添加这些标准
puppeteer.launch({args});

我在" - flag-switches-begin"之前收到它们。 line(我正在观看chrome运行的命令:" chrome:// version")。

非常感谢你!

4 个答案:

答案 0 :(得分:0)

请按照以下步骤操作。

  1. puppeteer.defaultArgs()将为您提供所有默认标志。您可以使用此方法获取它们,然后过滤数组以删除所需的标志。 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerdefaultargs

    const args = puppeteer.defaultArgs().filter(arg => arg !== '--enable-asm-webassembly')

  2. 现在,向数组添加一些标志。

    args.push('--enable-webgl-draft-extensions', '--shared-array-buffer')

  3. 启动新的浏览器实例时,
  4. 启用ignoreDefaultArgs标志。另外,提供我们上面所做的论点列表。

    const browser = await puppeteer.launch({ ignoreDefaultArgs: true, args })

答案 1 :(得分:0)

先前的答案已经指出了正确的方向,但是可以使其更简单。关键是您需要将参数拆分为一个数组。该代码可以简单地是:

const browser = await puppeteer.launch({args:["--flag-switches-begin", "--enable-webgl-draft-extensions", "--enable-features=SharedArrayBuffer", "--disable-features=AsmJsToWebAssembly", "--flag-switches-end"]});

答案 2 :(得分:0)

await puppeteer.launch({
      args: [
        '--disable-features=LookalikeUrlNavigationSuggestionsUI'
      ]
})

尝试这样的事情。

您可以启动Chromium,切换标志,然后转到“ chrome:// version /”,以查看命令行中发生了什么变化。

在我的情况下,当我将“类似URL的导航建议”切换为禁用,重新启动Chrommium时,我在命令行中找到了--disable-features=LookalikeUrlNavigationSuggestionsUI

答案 3 :(得分:0)

正确的参数是:

await puppeteer.launch({headless: headless, devtools: true, args: ['--disable-web-security', '--disable-features=IsolateOrigins', ' --disable-site-isolation-trials ']});

但是 puppeteer 一直崩溃。

原因是我使用了旧的 puppeteer 版本,puppeteer 1.8.0。 升级到 puppeteer@8.0.0 后就可以了。

您可以检查隔离是否被禁用: chrome://process-internals

建议于 https://stackoverflow.com/a/51320323/337587

关于标志的更多信息:https://www.chromium.org/Home/chromium-security/site-isolation