node.js - 单击基于 $eval 的 div 抛出 div click 不是 puppeteer 中的函数

标签 node.js puppeteer

我想点击页面中显示的 app-meter-tile 之一(有很多带有数据的 app-meter-tile 列表在页面中),带有 id customer-infoofftake id 或客户名称。我已经尝试了下面的代码,但抛出以下错误。我很想知道我们如何点击基于 $eval 或访问基于 xpath 选项,请告知。

var div = await page.$eval(".mb-10[id='customer-info']",
                element=> element.getAttribute("id"))    
await div.click(".mb-10[id='customer-info']");

超时或其他错误:TypeError:div.click 不是函数 在 C:\work\UiTests\offline-login-check.js:59:15 在 process._tickCallback (内部/process/next_tick.js:68:7)

enter image description here

最佳答案

为什么你的代码不起作用

此方法访问具有提供的选择器的第一个元素并返回其id:

var div = await page.$eval(".mb-10[id='customer-info']",
            element=> element.getAttribute("id"))    

id 是一个字符串,当然没有click 函数。

page.$eval的正确使用方法:

await page.$eval(".mb-10[id='customer-info']", element => element.click())

另一种方法 是通过获取元素的句柄然后单击它:

const div = await page.$(".mb-10[id='customer-info']");
await div.click();

关于node.js - 单击基于 $eval 的 div 抛出 div click 不是 puppeteer 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57931437/

相关文章:

javascript - 使用 Math.random() 生成均匀分布

ios - JSON 输出为带有空白值的键

javascript - 停止 puppeteer 进程,直到全局 var 值从 false 变为某个字符串

node.js - Nodejs/Puppeteer - 导航超时

javascript - Puppeteer 超时错误 : Navigation timeout of 30000 ms exceeded

node.js - 尝试发布到 mysql db : "Cannot read property ' create' of undefined"时出错

node.js - 如何从磁力链接或 infohash 创建 torrent 文件

node.js - 为什么 async.filter() 不接受错误?

javascript - JavaScript 中 &= 的含义是什么

javascript - 为什么setInterval每次循环一次,都会抛出所有循环的所有数据?