Puppeteer-等待网络请求在page.select()之后完成

时间:2020-01-16 13:49:16

标签: javascript node.js puppeteer

在页面上执行操作之后,在Puppeteer中执行新操作之前,是否有等待网络请求解决的方法?

我需要使用page.select()与页面上的选择菜单进行交互,这将导致动态图像和字体加载到页面中。我需要等待这些请求完成,然后再执行下一个操作。

-

注意事项:

  1. 我无法重新加载页面或进入新的网址。
  2. 我不知道请求类型可能是多少,或者是多少

-

// launch puppeteer
const browser = await puppeteer.launch({});

// load new page
const page = await browser.newPage();

// go to URL and wait for initial requests to resolve
await page.goto(pageUrl, {
  waitUntil: "networkidle0"
});

// START LOOP
for (let value of lotsOfValues) {

  // interact with select menu
  await page.select('select', value);

  // wait for network requests to complete (images, fonts)
  ??

  // screenshot page with new content
  await pageElement.screenshot({
    type: "jpeg",
    quality: 100
  });

} // END LOOP

// close
await browser.close();

1 个答案:

答案 0 :(得分:0)

此问题的答案在于使用t并监视后续请求,等待它们旋转,然后继续执行下一个任务(感谢@Guarev 指出了正确的方向) )。

该模块(https://github.com/jtassin/pending-xhr-puppeteer)确实可以做到这一点,但适用于XHR请求。我对其进行了修改,以查找“图像”和“字体”类型。

最终代码如下:

t

NPM模块

B