【问题标题】:How to detect version of chrome used with puppeteer?如何检测与 puppeteer 一起使用的 chrome 版本?
【发布时间】:2021-07-09 07:52:01
【问题描述】:

我读到 puppeteer 使用的是最新版本的 chrome, 在哪里可以找到它使用的版本

我不想访问窗口上的导航器对象来获取它。基本上没有运行时。只是想知道 puppeteer 作为一个包是否在某个地方列出了它的依赖关系

基本上,我想从“我可以使用”或 chrome 参考等其他网站查找我可以假设的所有 CSS 和 javascript 支持。

【问题讨论】:

    标签: javascript node.js google-chrome puppeteer google-chrome-headless


    【解决方案1】:

    使用browser.version() 函数在运行时找出使用的版本。

    如果你有 page 对象,你可以像这样使用它:

    const version = await page.browser().version();
    

    要找出哪个 Chromium 版本与 puppeteer 版本捆绑在一起而不启动,您应该查看发行说明,总有一个关于使用的 Chromium 版本的部分。

    示例(摘自v1.14.0的发行说明):

    重大变化

    • 铬 75.0.3738.0 (r641577)

    【讨论】:

    • 所以不用导入页面?
    • @Pratik no,page 是由browser.pages()browser.newPage(); 返回的对象。如果由于某种原因您不想使用页面对象(不太可能,您通常使用页面对象),(await puppeteer.launch()).version() 也可以工作——.version()browser 对象上的一个函数,通常你'我只会做其中之一。
    【解决方案2】:

    如果您在项目的根目录中(与您的 node_modules 目录相同的级别),则可以在节点中运行它

    (async()=>{const x = require("puppeteer"); console.log(await(await(await x.launch()).newPage()).browser().version())})()
    

    我的结果: > HeadlessChrome/91.0.4469.0

    我发现这种方法更简单,因为您可以在服务器上运行它而无需进行文件操作。

    (假设您不能使用顶级异步等待)

    【讨论】:

      【解决方案3】:

      在最新版本的node中,上面的代码返回了一个promise对象。

      你需要做这样的事情来获取浏览器版本

      await page.browser().version().then(function(version) {
      console.log(version);
      });
      

      应该打印这样的HeadlessChrome/84.0.4143.2

      【讨论】:

        【解决方案4】:

        另一种通过命令获取 puppeteer 版本并检查 https://www.npmjs.com/package/puppeteer 中安装的 puppeteer 支持的 chrome 版本

        cat <puppeteer_dir>/package.json | grep "\"version\":"
        

        对我来说,puppeteer_dir= /home/packages/node_modules/puppeteer

        结果是"version": "5.3.1",受支持的chrome版本是chrome-85

        【讨论】:

          猜你喜欢
          • 2019-10-16
          • 2018-08-16
          • 1970-01-01
          • 2021-12-10
          • 1970-01-01
          • 2011-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多