通过元素ID单击带有操纵符的复选框
我有这个木偶代码:
(async () => {
const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
const page = await browser.newPage();
await page.goto("");
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)
在上面的代码示例中,这就是我解决问题的方式。
(async () => {
const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
const page = await browser.newPage();
await page.goto("https://myurl/page");
await page.waitForSelector("#select-all-checkbox");
await page.evaluate(() => {
document.querySelector("#select-all-checkbox").parentElement.click();
});
await page.close();
await browser.close();
})();