通过元素ID单击带有操纵符的复选框

问题描述 投票:0回答:1

我有这个木偶代码:

(async () => {
  const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
  const page = await browser.newPage();

  await page.goto("https://myurl.com/page");
  await page.waitForSelector("#select-all-checkbox");

  var bodyHTML = await page.content();
  console.log(bodyHTML + "\n\n");

  await page.click("#select-all-checkbox");
  await page.close();
  await browser.close();
})();

将HTML登录到控制台,我已经验证了所访问的页面具有以下HTML:

<label><input type="checkbox" name="" id="select-all-checkbox" value="" checked=""><span class="ifaFs"><span data-testid="icon-checkbox-someselected" class="hdDWuD"></span></span></label>

我在page.click行上收到此错误:

((node:3827)UnhandledPromiseRejectionWarning:错误:节点是不可见或不是HTMLElement在ElementHandle._clickablePoint(/path/to/node_modules/puppeteer/lib/JSHandle.js:217:13)在process._tickCallback(内部/进程/next_tick.js:68:7)-异步-在ElementHandle。 (/路径/到/node_modules/puppeteer/lib/helper.js:111:15)在DOMWorld.click(/path/to/node_modules/puppeteer/lib/DOMWorld.js:367:18)在process._tickCallback(内部/进程/next_tick.js:68:7)-异步-在帧。 (/路径/到/node_modules/puppeteer/lib/helper.js:111:15)在Page.click(/path/to/node_modules/puppeteer/lib/Page.js:1037:29)

node.js puppeteer
1个回答
0
投票

在上面的代码示例中,这就是我解决问题的方式。

(async () => {
  const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
  const page = await browser.newPage();

  await page.goto("https://myurl.com/page");
  await page.waitForSelector("#select-all-checkbox");

  await page.evaluate(() => {
    document.querySelector("#select-all-checkbox").parentElement.click();
  });

  await page.close();
  await browser.close();
})();
© www.soinside.com 2019 - 2024. All rights reserved.