You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中Selenium WebDriver如何定位含指定内部span的外部span文本

解决方法:获取外部span的目标文本

嘿,我来帮你搞定这个问题!你之前的XPath有两个关键问题:一是拼写错误(prededing-sibling应该是preceding-sibling),二是逻辑不对——内部的<span class="second">是外部<span class="first">的子元素,不是兄弟节点,所以用兄弟轴根本找不到目标元素。

下面给你几种可行的解决方案:

方案1:定位父元素后处理文本

先找到包含(Total)的内部span,再获取它的父元素,最后通过文本处理提取目标内容:

from selenium.webdriver.common.by import By

# 定位内部span的父元素(也就是外部span)
parent_span = driver.find_element(By.XPATH, "//span[text()='(Total)']/parent::span")
# 提取文本并清理掉多余内容
my_text = parent_span.text.replace("(Total)", "").strip()
print(my_text)  # 输出: My Text

方案2:直接定位外部span并处理文本

如果外部span的classfirst是唯一的,也可以直接定位它,再拆分文本:

target_span = driver.find_element(By.XPATH, "//span[@class='first' and ./span[text()='(Total)']]")
# 用split拆分文本,取前半部分并清理空格
my_text = target_span.text.split("(Total)")[0].strip()

方案3:用正则表达式精准提取

如果文本格式可能有变化,用正则表达式更可靠:

import re

full_text = driver.find_element(By.XPATH, "//span[text()='(Total)']/parent::span").text
# 匹配(Total)之前的内容
match = re.search(r'(.+?)\s*\(Total\)', full_text)
if match:
    my_text = match.group(1).strip()
    print(my_text)

这些方法都能准确获取到你要的My Text,核心是先找到正确的元素层级,再通过文本处理分离目标内容~

内容的提问来源于stack exchange,提问作者TJ1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:42:30