如何等待响应内容加载和更改DOM内容?

时间:2019-07-17 10:39:48

标签: javascript node.js google-chrome chromium puppeteer

我正在从下拉列表中选择一个选项,这将发送一个网络请求。对此请求作出响应后,它将更新表内容。但是,当我应用抓取代码等待响应(使用waitForResponse(url))时,却在更改表的内容之前进行了抓取。我要等一会儿,直到表内容更改。

类似await page.waitFor({waitUntill:'domcontentchanged})

我尝试过

  1. 使用(waitFor(1000)

  2. 响应后等待一段时间
  3. 正在等待其他现有的DOM元素。这样它就等待DOM更新。

  4. 重新加载页面

但是似乎没有任何作用。

下面的代码在异步函数内部,稍后将调用它并打印结果。

await page.waitForSelector('#ctl00_ContentPlaceHolder1_SavedSearchesDropDownList');
await Promise.all([
  page.select('#ctl00_ContentPlaceHolder1_SavedSearchesDropDownList', 'option2'),
  page.waitForResponse('http://www.someurl.com/Pages/A/B.aspx')
]);

const result = await page.evaluate(() => {
  var result_arr = [];



  let table_rows = document.querySelectorAll('#ctl00_ContentPlaceHolder1_DomainsListView_itemContainer tr');

  for (let row of table_rows) {
    let value1 = row.querySelector('td:nth-of-type(2)').innerText;
    let value2 = row.querySelector('td:nth-of-type(4)').innerText;

    result_arr.push({
      value1,
      value2
    });
  };
  return result_arr;
});

return result;

0 个答案:

没有答案