getAttribute 在 ElementHandle 上不可用

Posted

技术标签:

【中文标题】getAttribute 在 ElementHandle 上不可用【英文标题】:getAttribute is not available on the ElementHandle 【发布时间】:2020-08-05 05:58:04 【问题描述】:

我用的是playwright 0.13.0版,

我有一个ElementHandle 的实例,但getAttribute 函数不可用,调用它会引发错误,指出getAttribute 不是函数:

await myElem.getAttribute('src')

我用调试器仔细检查过,函数不在实例上。

另外,ElementHandle 没有等效的 page.evaluate 函数

【问题讨论】:

【参考方案1】:

这对我有用:

const attr = await page.$eval('.your-locator-class', el => el.src)

【讨论】:

【参考方案2】:

对于这方面的新手,更高版本的 Playwright 支持 OP 使用的 API。见:https://playwright.dev/docs/api/class-elementhandle#elementhandlegetattributename

【讨论】:

【参考方案3】:

您可以将它作为参数传递给page.evaluate 函数:

await page.evaluate(el => el.getAttribute('src'), myElem);

await myElem.evaluate(node => node.getAttribute('src');

【讨论】:

我个人认为下面的语法更好读一些。 await myElem.evaluate(node => node.getAttribute('src');

以上是关于getAttribute 在 ElementHandle 上不可用的主要内容,如果未能解决你的问题,请参考以下文章

python 新式类的 __getattribute__

在python中如何自定义getattribute 和 getattr

js中的getAttribute方法使用示例

selenium getAttribute

session.setAttribute和session.getAttribute

关于getAttribute()和setAttribute()的总结