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

Selenium如何通过Xpath结合正则匹配id前缀为jsc_c_的元素

问题解决方法

错误原因说明

XPath 内置的contains()方法仅支持普通字符串匹配,不识别通配符、正则语法,你写法中的*+会被当做普通字符匹配,因此无法定位到目标元素。

方案1:无需正则,优先推荐(全版本兼容)

你的目标元素id均以jsc_c_为固定前缀,直接使用XPath的starts-with()方法即可满足匹配需求,兼容性最好,支持所有浏览器和Selenium版本:
XPath规则写法:
//*[starts-with(@id,'jsc_c_')]/span
对应Selenium代码(推荐使用新版Selenium的By类写法,旧版find_element_by_xpath已废弃):

from selenium.webdriver.common.by import By

# 匹配单个元素
element = driver.find_element(By.XPATH, "//*[starts-with(@id,'jsc_c_')]/span")
# 匹配所有符合规则的元素
elements = driver.find_elements(By.XPATH, "//*[starts-with(@id,'jsc_c_')]/span")

方案2:正则匹配实现(适用于更复杂的匹配规则)

原生浏览器内置的XPath 1.0引擎不支持正则语法,如果你确实需要用正则实现更复杂的id规则匹配,可以通过执行JavaScript的方式实现:
示例代码(匹配id符合jsc_c_+任意字母数字组合规则的元素下的span):

# 匹配所有符合规则的span元素
spans = driver.execute_script("""
  return Array.from(document.querySelectorAll('span')).filter(span => {
    const parentId = span.parentElement?.id;
    return parentId && /^jsc_c_[a-zA-Z0-9]+$/.test(parentId);
  });
""")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:45:05