You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指定Chrome路径启动Puppeteer报Page.getFrameTree未找到错误及相关问题

问题分析与解决方案

1. Protocol error (Page.getFrameTree) 错误原因及解决

你遇到的这个协议错误,核心原因是Puppeteer版本与指定的Chrome版本不兼容。Puppeteer每个版本都绑定了特定的Chrome/Chromium版本,你使用的Puppeteer v0.13.0对应的是Chrome 64.x系列,但你指定的本地Chrome是63.0.3239.84——两者的Chrome DevTools Protocol(CDP)不匹配,Page.getFrameTree是较新版本CDP才引入的方法,旧版Chrome 63不支持,所以抛出了这个错误。

解决办法有三个可选方向:

  • 保留默认配置:就是你已经发现有效的方式——移除executablePath,让Puppeteer使用自带的兼容版本Chrome/Chromium,这样CDP协议能完美匹配,不会再出现错误。
  • 升级本地Chrome:把你的Chrome升级到64.x或更高版本(可以查看Puppeteer v0.13.0的发布说明确认具体适配版本),之后再指定executablePath就能正常运行。
  • 降级Puppeteer:找到适配Chrome 63的Puppeteer版本(比如v0.12.x系列),通过npm install puppeteer@0.12.x安装即可。

2. --disable-infobars 参数不生效的问题

在Chrome 63及之后的版本中,--disable-infobars的行为有所调整,再加上Puppeteer默认会添加一些启动参数,可能会干扰这个参数的生效。你可以试试这两种方案:

  • 调整启动参数并排除冲突项:在launch选项里,移除默认的自动化提示参数,确保--disable-infobars能正常生效:
    const browser = await puppeteer.launch({
      headless: false,
      args: ['--disable-infobars', '--remote-debugging-port=9222'],
      ignoreDefaultArgs: ['--enable-automation'] // 移除默认的自动化提示参数,避免冲突
    });
    
  • 页面加载后通过JS手动隐藏:如果参数方式无效,可以在页面加载完成后执行一段脚本强制隐藏信息栏:
    await gitPage.evaluate(() => {
      const infobar = document.querySelector('.infobar');
      if (infobar) infobar.style.display = 'none';
    });
    

3. 视口设置不生效的问题

你在puppeteer.launch()里写的setViewport: {width: 1920, height: 1080}是错误配置——launch方法的选项里根本没有setViewport这个参数!视口设置只能通过page.setViewport()方法实现,也就是你在browser.newPage()之后调用的gitPage.setViewport({width: 1024, height: 768})。

只要解决了前面的协议错误,这段视口设置代码就能正常生效。记得把launch里无效的setViewport配置删掉,避免混淆。

修正后的完整代码

const puppeteer = require("puppeteer");

(async() => {
  const browser = await puppeteer.launch({
    headless: false,
    args: ['--disable-infobars', '--remote-debugging-port=9222'],
    // 若坚持使用本地Chrome,请确保版本与Puppeteer兼容
    // executablePath: "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
    ignoreDefaultArgs: ['--enable-automation']
  });
  try{
    const gitPage = await browser.newPage();
    await gitPage.setViewport({width: 1024, height: 768});
    await gitPage.goto("https://github.com/login", {waitUntil: 'networkidle2'});
    await gitPage.type("#login_field", "CaptainPlanet", {delay: 100});
    await gitPage.type("#password", "NPH_Andrews", {delay: 100});
    const btnLogin = await gitPage.$("input[tabindex='3']");
    await btnLogin.click();
  }catch(err) {
    console.log("error: " + err.message);
  }
})();

内容的提问来源于stack exchange,提问作者JoeyG2677

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:15:53