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

使用Puppeteer获取元素文本返回空对象,求问题排查

问题分析与修复

你的代码存在三个关键错误,导致无法正确获取页码文本:

1. 类选择器语法错误

document.querySelector('s-pagination-item.s-pagination-disabled') 中的 s-pagination-item 缺少开头的 .,这会被解析为标签选择器(寻找名为s-pagination-item的HTML标签),但实际目标元素是带有该类名的元素,必须写成类选择器:.s-pagination-item.s-pagination-disabled。

2. page.evaluate 用法错误

你把返回逻辑放在了page.evaluate的第二个参数里,不符合Puppeteer的API规范:page.evaluate的第二个参数是传递给回调函数的参数,而非返回逻辑。正确的做法是在回调函数内部直接获取元素文本并返回。

3. 变量声明与空值处理缺失

使用var容易引发变量提升问题,建议改用let;同时未对元素存在性做判断,若元素意外不存在会直接报错。


修复后的代码

// 判断是否存在分页分隔符(多页场景)
const hasPaginationSeparator = await page.$('.s-pagination-item.s-pagination-next.s-pagination-button.s-pagination-separator') !== null;
let lastPageNumber = 1;

if (hasPaginationSeparator) {
  // 在浏览器上下文内获取最后一页页码
  lastPageNumber = await page.evaluate(() => {
    const lastPageElement = document.querySelector('.s-pagination-item.s-pagination-disabled');
    // 确保元素存在时再取文本,避免报错
    return lastPageElement ? lastPageElement.innerText.trim() : '1';
  });
}

// 转换为数字类型(可选,根据需求调整)
lastPageNumber = parseInt(lastPageNumber, 10);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:27:35