Python Selenium使用带/text()的XPath获取div文本失败求助
问题原因
- Selenium 所有
find_element系列方法仅支持返回DOM元素节点(即WebElement对象),你在XPath结尾加/text()选中的是文本节点,不属于WebElement类型,因此Selenium会判定未找到符合条件的元素,这就是你第二段测试代码返回False的原因。 - 你最初编写的XPath存在语法错误:
//div[contains(@class, 'test')/text()]的条件段写法不符合规范,contains函数的正确格式为contains(待匹配属性, 匹配值),将/text()放入条件段中属于语法错误,自然无法获取到内容。
正确实现方式
你只需要先定位到对应的div元素,再调用WebElement对象的text属性即可获取内部文本内容,示例代码如下:
# 定位目标div元素 test_div = driver.find_element_by_xpath("//div[contains(@class, 'test')]") # 获取元素文本内容 mytext = test_div.text print(mytext)
如果使用的是Selenium 4及以上版本,find_element_by_xpath方法已被弃用,推荐使用如下写法:
from selenium.webdriver.common.by import By test_div = driver.find_element(By.XPATH, "//div[contains(@class, 'test')]") mytext = test_div.text print(mytext)
内容的提问来源于stack exchange,提问作者aude
相关产品推荐
相关产品推荐

