如何为含动态属性的div标签编写单条XPath表达式?
解决方案
针对你描述的动态属性场景,可以用以下两种XPath写法来同时匹配class和text两个属性:
基础匹配方案(兼容所有XPath版本)
//div[starts-with(@class, 'hello@') and contains(@text, '@he@') and contains(@text, 'llo@')]
匹配逻辑说明
starts-with(@class, 'hello@'):锁定class属性以固定前缀hello@开头的div,不管后续数字如何变化都能命中contains(@text, '@he@')+contains(@text, 'llo@'):同时匹配text属性里的两个固定片段,忽略前后及中间的动态数字
精准正则匹配方案(XPath 2.0及以上版本支持)
如果你的环境支持正则表达式,可以用更严格的规则确保属性格式完全符合预期:
//div[matches(@class, '^hello@\d+$') and matches(@text, '^\d+@he@\d+llo@\d+$')]
正则规则说明
^hello@\d+$:强制class属性为hello@后接一或多个数字,完全匹配动态数字的场景^\d+@he@\d+llo@\d+$:强制text属性遵循「开头数字+@he@+中间数字+llo@+结尾数字」的固定结构
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

