get_text()或text属性在标签中不起作用

5 投票
2 回答
4040 浏览
提问于 2025-04-17 21:09

我想获取标签的文本内容,但在下面的HTML中,get_text()text属性都没法用:

<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'

我能正确找到网页元素,也能访问其他属性,比如大小、位置、父元素等等。我本以为“text”能正常工作。有没有人能帮帮我?

2 个回答

0

试着使用 innerText 属性,这样可以只获取标签内的文本内容。

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

上面HTML中的<label>标签没有文本属性。

如果你想获取“BATS Multicast PITCH”这个字符串,你需要从<input>标签中获取。例如,下面的代码可以打印出这个字符串:

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

如果你想获取<label>标签里面的所有内容,可以使用:

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)来找到这些特定的元素。

顺便说一下,我刚注意到上面的<input>标签没有正确关闭……

撰写回答