Javascript Puppeteer 错误:节点不可点击或不是 HTMLElement

Posted

技术标签:

【中文标题】Javascript Puppeteer 错误:节点不可点击或不是 HTMLElement【英文标题】:Javascript Puppeteer Error: Node is either not clickable or not an HTMLElement 【发布时间】:2022-01-22 08:29:40 【问题描述】:

如果我尝试单击这样的元素,我会收到错误:

const handle = await page.$('.days-label.col-md-12.desktop div:nth-child(1)');
await handle.click();

但是,如果我像这样单击它,它会起作用:

await page.$eval('.days-label.col-md-12.desktop div:nth-child(1)', el => el.click()); 

我尝试通过等待选择器和导航来修复它,但仍然是同样的错误:

await page.waitForSelector('.days-label.col-md-12.desktop div:nth-child(1)');
const handle = await page.$('.days-label.col-md-12.desktop div:nth-child(1)');
await Promise.all([
    page.waitForNavigation(),
    handle.click(),
]);

【问题讨论】:

为什么不使用有效的呢?这种行为是known。 【参考方案1】:

waitForSelector() 返回<Promise<?ElementHandle>>

const handle = await page.waitForSelector(
  '.days-label.col-md-12.desktop div:nth-child(1)'
)
await Promise.all([
    page.waitForNavigation(),
    handle.click(),
])

【讨论】:

以上是关于Javascript Puppeteer 错误:节点不可点击或不是 HTMLElement的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Puppeteer 和纯 JavaScript 检查元素是不是可见?

Javascript/HTML/Puppeteer - 如何访问属性数据绑定中的值(单击按钮)?

javascript 使用chrome和puppeteer拦截响应

javascript 从puppeteer导出所有用户/会话数据

javascript Puppeteer Snippets

javascript puppeteer1.js