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

Puppeteer中browser.pages()[0]调用page.goto连续跳转失败问题

Puppeteer中browser.pages()[0]跳转URL报错的解决方法

问题原因

你遇到的TypeError: Cannot read properties of undefined (reading 'goto')错误,核心是错误处理了browser.pages()的异步返回值:

  • browser.pages()是异步方法,返回的是Promise对象,而非直接的页面数组
  • 你的代码const page = await browser.pages()[0]逻辑错误:先尝试读取Promise的索引0(结果为undefined),再对undefined执行await,最终page变量为undefined,自然无法调用goto方法

而browser.newPage()是正确的异步调用,await browser.newPage()能获取到有效的Page实例,因此连续跳转可正常运行。

修正后的代码

先通过await获取完整的页面数组,再取第一个元素:

const puppeteer = require('puppeteer-core');

(async () => {
    const browser = await puppeteer.launch({
        executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
        headless: false 
    })

    // 先await拿到页面数组,再取第一个页面
    const pages = await browser.pages();
    const page = pages[0];
    const urls = ['https://www.google.com/', 'https://www.yahoo.com/']
    for (let i = 0; i < urls.length; i++) {
        const url = urls[i];
        await page.goto(`${url}`)
    }
    await browser.close()
})()

额外注意事项

  • 非无头模式启动Chrome时,默认会打开一个初始标签页(即pages[0]),但无头模式下可能没有初始页面,此时pages[0]会是undefined,建议增加兜底判断:
    const pages = await browser.pages();
    const page = pages[0] || await browser.newPage();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:17