get_text()或text属性不适用于标签

时间:2014-03-06 16:58:54

标签: python python-2.7 selenium-webdriver

我想访问标签文本,但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'

我正在获取正确的网络元素,并且能够访问其他属性,如大小,位置,父级等。我希望“文本”能够正常工作。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:5)

上述HTML中的<label>标记没有文字属性。

如果要检索BATS Multicast PITCH字符串,则需要从<input>标记中获取该字符串。例如,以下代码将打印此字符串:

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

如果您想要检索<label>标记的整个内部HTML,那么您可以使用:

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

这将打印"<input type="checkbox" value="BATSMC">BATS Multicast PITCH

当然,您的HTML中可能还有其他<label><input>标记,因此您需要使用其他方法(find_element_by_tag_name除外)才能找到这些标记具体要素。

BTW,我刚才注意到上面HTML中的<input>标记没有正确关闭...

答案 1 :(得分:0)

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

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