输入:
<input type="text" name="username" value="TestLeaf" align="left" style="width:350px" xpath="1">
<div>**TestLeaf**</div>
</input>
Selenium Python中的代码:
textGet = driver.find_element_by_xpath("//input[@name='username' and @value='TestLeaf']").get_text
print(textGet)
结果:显示错误
"AttributeError: 'WebElement' object has no attribute 'get_text'"
请帮助我如何在开始和结束标签之间获得文本
要获取文本,只需执行以下操作。
textGet = driver.find_element_by_xpath("//input[@name='username' and @value='TestLeaf']").text
.get_text不是有效的方法。
此错误消息。。。
"AttributeError: 'WebElement' object has no attribute 'get_text'"
意味着您在程序中调用了get_text
属性,该属性不是有效的WebElement属性。相反,您需要使用text
属性。
解决方案
要打印文本TestLeaf,您可以使用以下定位器策略之一:
使用xpath和
get_attribute()
:print(driver.find_element_by_xpath("//input[@name='username' and @value='TestLeaf']/div").get_attribute("innerHTML"))
使用xpath和text属性:
print(driver.find_element_by_xpath("//input[@name='username' and @value='TestLeaf']/div").text)
理想情况下,要打印文本,您必须诱导WebDriverWait等待visibility_of_element_located()
,并且您可以使用以下定位器策略之一:
使用xpath和
get_attribute()
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/input[@name='username' and @value='TestLeaf']/div"))).get_attribute("innerHTML"))
使用xpath和text属性:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[@name='username' and @value='TestLeaf']/div"))).text)
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
您可以在"如何使用Selenium-Python 检索WebElement的文本"中找到相关讨论
Outro
有用文档链接:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性返回The text of the element.
- 使用Selenium的文本和innerHTML之间的差异