node.js - puppeteer如何获取元素tagName

标签 node.js puppeteer

我想获取元素的 tagName。在以下示例中应为按钮

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()

错误消息说错误:未能找到与选择器“*”匹配的元素

我可以告诉 elements 匹配一个元素,因为 elements.length1

哪里错了?

==========编辑==========

假设我事先已经有了 elements,如何从中获取 tagName

谢谢!

最佳答案

尝试使用 page.$eval 选择按钮,然后从按钮获取 tagName:

const tagName = await page.$eval('button', button => button.tagName);

如果您已经有像 elements[0] 这样的 elementHandle,您可以通过将其传递给 page.evaluate 来从该元素获取属性>:

const tagName = await page.evaluate(
  element => element.tagName,
  elements[0]
);

关于node.js - puppeteer如何获取元素tagName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54035687/

相关文章:

node.js - NodeJS 错误 : node. js :810 var cwd = process. cwd();

node.js - Puppeteer 下拉菜单不是选择类型

javascript - 对来自特定启动器/源的 iframe 的加载和执行时间进行基准测试

javascript - Puppeteer 无法使用评估获取页面的innerHTML

node.js - puppeteer 无法登录谷歌帐户

node.js - 在连接字符串密码字段中使用 Promise 返回数据库未连接

node.js - 执行耗时 60006 毫秒,完成状态为 : 'timeout'

node.js - 如何解决 Express Validator 中间件错误?

javascript - 在 module.exports 方法上使用 sinon 测试方法调用

node.js - 如何使用工作线程实现网络自动化目的的 puppeteer 多线程