我正在从下拉列表中选择一个选项,这将发送一个网络请求。对此请求作出响应后,它将更新表内容。但是,当我应用抓取代码等待响应(使用waitForResponse(url)
)时,却在更改表的内容之前进行了抓取。我要等一会儿,直到表内容更改。
类似await page.waitFor({waitUntill:'domcontentchanged})
我尝试过
使用(waitFor(1000)
正在等待其他现有的DOM元素。这样它就等待DOM更新。
重新加载页面
但是似乎没有任何作用。
下面的代码在异步函数内部,稍后将调用它并打印结果。
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;