node.js - 通过元素 ID 单击带有 puppeteer 的复选框

标签 node.js puppeteer

我有这个 puppeteer 代码:

(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: Error: Node is either not visible or not an HTMLElement
at ElementHandle._clickablePoint (/path/to/node_modules/puppeteer/lib/JSHandle.js:217:13)
at process._tickCallback (internal/process/next_tick.js:68:7)
-- ASYNC --
at ElementHandle. (/path/to/node_modules/puppeteer/lib/helper.js:111:15)
at DOMWorld.click (/path/to/node_modules/puppeteer/lib/DOMWorld.js:367:18)
at process._tickCallback (internal/process/next_tick.js:68:7)
-- ASYNC --
at Frame. (/path/to/node_modules/puppeteer/lib/helper.js:111:15)
at Page.click (/path/to/node_modules/puppeteer/lib/Page.js:1037:29)

最佳答案

使用上面的代码示例,这就是我解决问题的方法。

(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();
})();

关于node.js - 通过元素 ID 单击带有 puppeteer 的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58346411/

相关文章:

node.js - 使用 Mongoose 统一错误捕获

node.js - 你如何使用 node-irc 登录?

angularjs - 当 AngularJS 作为前端时,Express 中的 session 未定义

node.js - 无法启动 chrome [FATAL :zygote_host_impl_linux. cc(116)] 没有可用的沙箱

javascript - Cheerio爬虫 : How do I ensure a page is fully loaded before extracting the data?

typescript - deno puppeteer 'chrome not found' 尝试导入 npm 依赖项

node.js - Sails/Waterline 中的软删除

javascript - 将post表单值从jade提交到node js

javascript - Puppeteer:从网站获取 localStorage

node.js - 如何使用 puppeteer 在移动 Debug模式下打开 Chromium?