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

如何在Python Selenium中适配含可变数字ID的XPATH表达式?

动态ID的XPATH定位解决方案

针对你遇到的POPOVER后数字动态变化的问题,以下两种XPATH表达式可以适配不同长度的数字,确保页面刷新后仍能准确定位元素:

方案一:前缀匹配(兼容性最优)

使用XPATH的starts-with()函数,匹配所有ID以POPOVER开头的元素,适配任意长度的后缀数字:

XPATH表达式

//*[starts-with(@id, 'POPOVER')]/div/div[1]/div/div/div[3]/div[2]/div/div/div/div/div

对应Python Selenium代码

link = driver.find_element(By.XPATH, '//*[starts-with(@id, "POPOVER")]/div/div[1]/div/div/div[3]/div[2]/div/div/div/div/div')

方案二:正则精确匹配(适用于现代浏览器)

如果需要严格限定ID为POPOVER+纯数字的格式(避免误匹配其他含POPOVER的ID),可以使用XPATH 2.0的matches()函数(Chrome、Firefox等现代浏览器均支持):

XPATH表达式

//*[matches(@id, '^POPOVER\d+$')]/div/div[1]/div/div/div[3]/div[2]/div/div/div/div/div

对应Python Selenium代码

link = driver.find_element(By.XPATH, '//*[matches(@id, "^POPOVER\\d+$")]/div/div[1]/div/div/div[3]/div[2]/div/div/div/div/div')

注意:正则匹配的写法在Python字符串中需要对反斜杠\进行转义,所以写成\\d。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:03:30