首页 > 解决方案 > 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.length1

哪里错了?

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

假设我elements事先已经有了,如何tagName摆脱它。

谢谢!

标签: node.jspuppeteer

解决方案


看来您elements是一个ElementHandles 数组。

在这种情况下,可能会有更直接的语法:

const tag_name = await (await elements[0].getProperty('tagName')).jsonValue()

这不涉及引用页面对象。

谢谢!


推荐阅读