选择带有木偶的复选框

时间:2020-01-21 10:20:52

标签: javascript node.js puppeteer

我需要检查此页面上的所有值;此页面可从以下位置访问: https://unctadstat.unctad.org/wds/TableViewer/tableView.aspx 然后选择图标“选择要查看的项目”,然后选择值“年份”:

enter image description hereenter image description here

我必须通过拆分多个文件来下载所有年份(例如,每个文件十年),因此,首先,我取消选中所有复选框;那么页面上会显示所有年份的标签,但是现在,我无法选择关联的复选框:

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年)(我想选择所有可见的年份)。

1 个答案:

答案 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);