我需要检查此页面上的所有值;此页面可从以下位置访问: https://unctadstat.unctad.org/wds/TableViewer/tableView.aspx 然后选择图标“选择要查看的项目”,然后选择值“年份”:
我必须通过拆分多个文件来下载所有年份(例如,每个文件十年),因此,首先,我取消选中所有复选框;那么页面上会显示所有年份的标签,但是现在,我无法选择关联的复选框:
const dataTemp = await page.evaluate(() => {
// const ths = Array.from(document.querySelectorAll('#ItemsTable > tbody > tr:nth-child(1) > td.DataItemSelections'));
const ths = Array.from(document.querySelectorAll('#ItemsTable > tbody > tr > td.DataItemSelections'));
return ths.map(value => value.innerHTML)
});;
如果我跑步:
const clickSelectors="#ItemsTable > tbody > tr > td > input[type=checkbox]";
await page.waitForSelector(clickSelectors);
await page.click(clickSelectors);
仅选择第一年(1970年)(我想选择所有可见的年份)。
答案 0 :(得分:1)
waitForSelector
返回document.querySelector
(不是document.querySelectorAll
)的结果,该结果返回第一项。在waitForSelector
之后,您可以执行以下操作:
const els = await page.$$("#ItemsTable > tbody > tr > td > input[type=checkbox]");
const promises = els.map(e => e.click());
await Promise.all(promises);