Selenium技术问题:无法定位元素获取页面'DISSMISSED'文本
解决Selenium获取"DISSMISSED"文本的问题
咱们先拆解下你现有代码里的问题:
- 第一个XPath语法错误,正确的属性选择写法应该是
//span[@class='icon-check'],但就算改对了,这个<span>标签本身是空的(内部没有文本内容),所以.text肯定拿不到有效信息。 - 第二个XPath用了
div标签,但实际HTML结构里是<p>标签;而且就算定位到<p>,.text会返回整个段落的完整文本,也就是Case Status: DISMISSED,不是你要的单独的DISSMISSED。
给你几个可行的解决方案:
方案一:字符串提取(简单直接)
先定位包含目标文本的<p>标签,拿到完整文本后再通过字符串处理提取目标内容:
# 定位到包含Case Status的p标签 case_status_p = driver.find_element_by_xpath("//p[strong[text()='Case Status: ']]") # 获取完整文本并过滤出目标内容 full_text = case_status_p.text dismissed_text = full_text.replace("Case Status: ", "").strip()
方案二:通过XPath定位文本节点(更精准)
因为DISSMISSED是<p>标签下的独立文本节点(和<strong>、<span>同级),可以用JavaScript直接提取这个文本节点的内容:
dismissed_text = driver.execute_script(""" return document.evaluate( "//p[strong[text()='Case Status: ']]/text()[normalize-space()]", document, null, XPathResult.STRING_TYPE, null ).stringValue.trim(); """)
方案三:利用父元素的textContent属性
直接获取<p>标签的textContent属性,再过滤掉不需要的前缀内容:
case_status_p = driver.find_element_by_xpath("//p[strong[text()='Case Status: ']]") dismissed_text = case_status_p.get_attribute('textContent').replace("Case Status: ", "").strip()
这几个方法都能帮你拿到想要的DISSMISSED文本,你可以根据自己的场景选择最合适的~
内容的提问来源于stack exchange,提问作者SXC88
相关产品推荐
相关产品推荐

