木偶操纵者如何获取元素标签名称
puppeteer howto get element 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
。
谢谢!
尝试使用 page.$eval
到 select 按钮,然后从按钮获取 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]
);
您的 elements
似乎是 ElementHandle
的数组。
在那种情况下,可能有更直接的语法:
const tag_name = await (await elements[0].getProperty('tagName')).jsonValue()
这不涉及引用页面对象。
谢谢!
我想获取元素的标签名称。在下面的例子中应该是 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
。
谢谢!
尝试使用 page.$eval
到 select 按钮,然后从按钮获取 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]
);
您的 elements
似乎是 ElementHandle
的数组。
在那种情况下,可能有更直接的语法:
const tag_name = await (await elements[0].getProperty('tagName')).jsonValue()
这不涉及引用页面对象。
谢谢!