使用Puppeteer点击复选框报错“Node is either not clickable or not an Element”的问题排查请求
Puppeteer点击复选框报错“Node is either not clickable or not an Element”的问题排查请求
各位好,我在用Puppeteer自动化点击页面上的复选框时遇到了报错,错误提示是:
Error: Node is either not clickable or not an Element
奇怪的是,我已经确认选择器是有效的,而且用page.evaluate()直接调用DOM的click()方法就能正常触发点击,唯独用Puppeteer自带的page.click()会报错,想请教下这是什么原因,有没有不用page.evaluate()的解决办法?
相关DOM结构
<div class="input-container"> <label class="st-checkbox" aria-checked="false"> <input class="st-checkbox__input paymentType" data-val="true" data-val-required='"IsAppTicket" måste anges.' id="IsAppTicket" name="IsAppTicket" tabindex="0" type="checkbox" value="true" /> <span class="st-checkbox__checkmark"></span> </label> </div>
出现错误的Puppeteer代码
const browser = await puppeteer.launch({ headless: true, }) const page = await browser.newPage() await page.setViewport({ width: 1920, height: 1080 }) await page.goto(URL) await page.screenshot({ path: 'screenshots/0.png' }) await page.click('button#CybotCookiebotDialogBodyButtonDecline') await page.screenshot({ path: 'screenshots/1.png' }) await page.waitForSelector('input#IsAppTicket') await page.click('input#IsAppTicket') // 此处触发报错:Node is either not clickable or not an Element await page.screenshot({ path: 'screenshots/2.png' }) await browser.close()
可以正常工作的替代方案
我试了用page.evaluate()直接操作DOM,是可以成功点击的:
await page.evaluate(() => { document.querySelector('input#IsAppTicket').click() // 完全正常 })
有没有大佬知道这是哪里出了问题?怎么能让page.click()正常工作呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

