给定一个 ElementHandle,如何找到与其关联的 HTML ID

Given an ElementHandle, how to find the HTML ID associated with it

在 Playwright 中,给定一个有效的 ElementHandle 对象,我如何找到与该元素关联的关联 HTML ID?

您可以像这样使用 page.evaluate 检索它:

const elemHandle = await page.$('h1')

const idAttr = await page.evaluate(el => el.id, elemHandle)
console.log(idAttr)

当然,不能保证任何元素都会有id


注意:我不知道以下方法是否也适用于 Playwright,但它肯定适用于 puppeteer。)

如果您不受 id 属性的限制,您可以检索页面内元素的唯一选择器,例如:

console.log(elemHandle._remoteObject)
{
  type: 'object',
  subtype: 'node',
  className: 'HTMLHeadingElement',
  description: 'h1.fs-headline1.ow-break-word.mb8.flex--item.fl1',
  objectId: '5611379091209172520.3.2'
}

其中 description 的值是一个有效的选择器。