【问题标题】:get_text() or text property is not working for labelsget_text() 或文本属性不适用于标签
【发布时间】:2014-03-06 16:58:53
【问题描述】:

我想访问标签的文本,但 get_text()text 属性都不适用于以下 HTML:

<label class="checkbox">
<input type="checkbox" value="BATSMC">
BATS Multicast PITCH
</label>

比如这里我要获取值:BATS Multicast PITCH

在 Selenium-Python 代码中:

print e.text 

给出空格,get_text() 给出以下错误:

AttributeError: 'WebElement' object has no attribute 'get_text'

我得到了正确的网络元素,并且能够访问其他属性,如大小、位置、父级等。我希望“文本”能够工作。任何人都可以帮忙吗?

【问题讨论】:

    标签: python python-2.7 selenium-webdriver


    【解决方案1】:

    上述 HTML 中的&lt;label&gt; 标签没有文本属性。

    如果要检索BATS Multicast PITCH 字符串,则需要从&lt;input&gt; 标记中获取它。例如,下面的代码将打印这个字符串:

    e = driver.find_element_by_tag_name('input')
    print e.text
    

    如果你想检索&lt;label&gt;标签的整个内部HTML,那么你可以使用:

    e = driver.find_element_by_tag_name('label')
    print e.get_attribute('innerHTML')
    

    这将打印"&lt;input type="checkbox" value="BATSMC"&gt;BATS Multicast PITCH

    当然,您的 HTML 中可能还有其他 &lt;label&gt;&lt;input&gt; 标记,因此您需要使用不同的方法(find_element_by_tag_name 除外)才能找到这些特定元素。

    顺便说一句,我刚刚注意到上面HTML中的&lt;input&gt;标签没有正确关闭...

    【讨论】:

    • 也给出“空白”值。是的, 没有关闭,是这样的。还有其他解决方案吗?
    • 你对这两个元素都试过get_attribute('innerHTML')了吗?
    • get_attribute('innerHTML') 为
    • 嗯,我认为这几乎证明了&lt;input&gt; 标签没有正确关闭是一个问题(否则,get_attribute('innerHTML') 也适用于这个标签)。
    【解决方案2】:

    尝试使用innerText 属性仅获取标签标签内的文本。

    e = driver.find_element_by_tag_name('label')
    print e.get_attribute('innerText')
    

    【讨论】:

    • 结果为“无”。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2016-09-13
    • 2018-12-01
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多