javascript 点击按钮并等待puppeteer中的网络响应

hrirmatl  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(161)

我试图单击循环中的按钮以从服务器加载数据。每次单击时,按钮都会向服务器发出网络请求,然后显示从服务器获取的数据。
我想做的是等待服务器的响应,然后再进行下一次点击/下一次过滤。这是我到目前为止所做的。

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文档中获得解决方案,但没有帮助我解决这个问题。

qeeaahzv

qeeaahzv1#

试试看

await page.waitForNavigation({ waitUntil: "networkidle2" });

相关问题