gpt4 book ai didi

python - 在 Selenium for Python 中,如何获取元素的属性而不是属性?

转载 作者:行者123 更新时间:2023-12-01 01:00:28 25 4
gpt4 key购买 nike

根据文档,get_attribute实际上返回的是属性而不是属性,除非该属性不存在,在这种情况下它会回退到属性。

get_property将始终返回该属性。

有没有办法始终获取该属性?我觉得很奇怪的是,名为“get_attribute”的函数会优先考虑属性值而不是属性值。

最佳答案

get_attribute(属性名称)

get_attribute(attribute_name)得到给定的attributeproperty元素的。

此方法将首先尝试返回具有给定名称的属性的值。如果具有该名称的属性不存在,则返回 attribute 的值同名。如果没有attribute用这个名字,None 返回。

被认为是真实的值,即等于 truefalse ,作为 bool 值返回。所有其他非 None值以字符串形式返回。对于不存在的属性或属性,None已返回。

  • 参数:

    attribute_name - Name of the attribute/property to retrieve.
  • 示例:

    # Check if the "active" CSS class is applied to an element.
    is_active = "active" in target_element.get_attribute("class")
<小时/>

get_property(属性名称)

get_property(property_name)获取元素的给定属性。

  • 参数:

    property_name - Name of the property to retrieve.
  • 示例:

    text_length = target_element.get_property("text_length")

听起来还是很相似吗?阅读下文...

<小时/>

Attributes and properties

当浏览器加载页面时,它会解析 HTML 并从中生成 DOM 对象。对于元素节点,大多数标准 HTML 属性会自动成为 DOM 对象的属性。

例如,如果标签是:

<body id="page">

那么 DOM 对象有 body.id="page" .

Note: The attribute-property mapping is not one-to-one!

<小时/>

HTML attributes

在 HTML 中,标签可能具有属性。当浏览器解析 HTML 为标签创建 DOM 对象时,它会识别标准属性并从中创建 DOM 属性。

因此,当元素具有 id 或其他标准属性时,就会创建相应的属性。但如果该属性是非标准的,则不会发生这种情况。

Note: A standard attribute for one element can be unknown for another one. For instance, type is standard attribute for <input> tag, but not for <body> tag. Standard attributes are described in the specification for the corresponding element class.

因此,如果一个属性是非标准的,则不会有它的 DOM 属性。在这种情况下,可以使用以下方法访问所有属性:

  • elem.hasAttribute(name) :检查是否存在。
  • elem.getAttribute(name) : 获取值。
  • elem.setAttribute(name, value) :设置值。
  • elem.removeAttribute(name) :删除该属性。

读取非标准属性的示例:

<body something="non-standard">
<script>
alert(document.body.getAttribute('something')); // non-standard
</script>
</body>
<小时/>

Property-attribute synchronization

当标准属性发生更改时,相应的属性会自动更新,并且(有一些异常(exception))反之亦然。但也有异常(exception),例如 input.value仅从 attribute 同步-> 至property ,但没有回来。这个功能实际上很方便,因为用户可能会修改值,然后,如果我们想从 HTML 中恢复“原始”值,就在属性中。

关于python - 在 Selenium for Python 中,如何获取元素的属性而不是属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55844052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com