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

如何使用Puppeteer处理分页中的__doPostBack函数调用?

用Puppeteer处理该分页场景的方案

方法一:直接执行__doPostBack函数(更推荐)

既然已经明确分页触发的是__doPostBack这个JS函数,完全不用非得点击页面元素,直接在页面上下文里执行这个函数就行——这种方式更高效稳定,不用纠结元素是否可见、有没有加载完成这些问题。

示例代码:

// 把targetPage换成你要跳转的页码,比如9、15都可以
const targetPage = 15;
await page.evaluate((gridId, pageNum) => {
  __doPostBack(gridId, `Page$${pageNum}`);
}, 'dnn$ctr1205$View$grdvwlstproposicao', targetPage);

不管当前显示的是1-10还是11-20,用这段代码都能直接跳到目标页码。

方法二:模拟用户点击分页元素

如果一定要完全模拟用户点击的行为,也可以通过选择器定位对应的元素,再调用page.click()。

1. 点击初始显示的页码(1-10)

直接通过文本内容定位a标签就行:

// 点击第5页
await page.click('tbody td a:has-text("5")');

或者通过href属性匹配定位:

await page.click('tbody td a[href*="Page$5"]');

2. 点击省略号加载11-20页

先找到显示省略号的td元素,点击它就能加载后续页码:

// 点击初始的省略号,加载11-20页
await page.click('tbody td:has-text("...")');
// 等页面加载完新的页码,比如等11号页码出现
await page.waitForSelector('tbody td a:has-text("11")');

3. 点击前后省略号翻页

加载出11-20页后,会出现两个省略号,分别对应回到1-10和加载21-30,可以通过位置定位:

// 点击最左边的省略号,回到1-10页
await page.click('tbody td:first-child:has-text("...")');
// 点击最右边的省略号,加载21-30页
await page.click('tbody td:last-child:has-text("...")');

关于你提到的page.click(dnn$ctr1205$View$grdvwlstproposicao','Page${i})调用

这种写法是错的,page.click()的参数只能是选择器字符串,不能直接传函数参数。但你可以用上面的方法一直接执行__doPostBack函数,效果和点击对应页码完全一样,而且更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:32:44