node.js - puppeteer 如何获取元素 tagName
问题描述
我想获得一个元素的标签名。应该button
在下面的例子中。
const puppeteer = require('puppeteer')
async function run () {
const browser = await puppeteer.launch({headless: false})
const page = await browser.newPage()
const html = `
<div>
<button type="button">click me</button>
<span>Some words.</span>
</div>
`
await page.setContent(html)
const elements = await page.$$('button')
const tagName = await elements[0].$eval('*', node => node.tagName)
console.log(tagName) // expect to be 'button'
await browser.close()
}
run()
错误信息说Error: failed to find element matching selector "*"
我可以按原样告诉匹配的elements
一个元素elements.length
1
哪里错了?
========== 编辑 ==========
假设我elements
事先已经有了,如何tagName
摆脱它。
谢谢!
解决方案
看来您elements
是一个ElementHandle
s 数组。
在这种情况下,可能会有更直接的语法:
const tag_name = await (await elements[0].getProperty('tagName')).jsonValue()
这不涉及引用页面对象。
谢谢!
推荐阅读
- python - Authentication with REST Framework Django
- node.js - 在自定义 express 函数中返回 res 和 next
- reactjs - Access to data in different lifecycles
- javascript - Bootstrap 模态显示相同的内容
- python - TemporaryDirectory() throws an attribute error when program runs
- javascript - 未选中复选框时禁用按钮
- ios - CleverTap iOS SDK AccountID/Token 不工作
- swiftui - 环绕以填充容器宽度的按钮的多行列表
- python - 交换列表中的数字然后使用列表理解时的奇怪行为
- java - Jacoco 从未调用过“mvn install”。手动触发时(“mvn jacoco:report”),表示缺少执行数据文件