我试图单击循环中的按钮以从服务器加载数据。每次单击时,按钮都会向服务器发出网络请求,然后显示从服务器获取的数据。
我想做的是等待服务器的响应,然后再进行下一次点击/下一次过滤。这是我到目前为止所做的。
let count = 0;
while (true) {
try {
/**
* click then wait for a response.
*/
await page.waitForSelector(".loadmoredata");
await page.click(".loadmoredata");
console.log("clicked", count);
// logic to wait for a response but it's not working
const response = await page.waitForResponse((response) => {
if (response.status() !== 200) return false;
return true;
});
if (!response) {
page.waitForTimeout(5000);
}
} catch (error) {
if (error instanceof errors.TimeoutError) {
break;
}
}
count++;
}
当我运行代码时,只要响应有点晚,循环就继续迭代,不等待响应。预期输出:点击0
点击1
点击2
点击3
点击4
查看真实的输出:
这些额外的迭代是因为它不等待响应。我在互联网上搜索,并试图从 puppet 的API文档中获得解决方案,但没有帮助我解决这个问题。
1条答案
按热度按时间qeeaahzv1#
试试看