本文详细介绍如何使用 XPath 精准匹配处于启用状态的 div 元素,重点在于结合 contains() 与 not() 函数,对 class 属性进行条件判断:既要包含目标关键词,又不能包含禁用状态标识,从而避免因动态哈希类名变化而造成元素定位失效。

本文详细说明如何通过 XPath 精确选择启用状态的 div 元素,核心思路是结合 contains() 与 not() 函数判断 class 属性是否同时满足“包含目标关键词”且不包含禁用标识,以避免动态哈希类名带来的 XPath 定位失效问题。
在进行 Web 自动化测试、爬虫抓取或 HTML 解析时,经常会遇到这样的场景:需要先判断某个元素当前是可用、可点击,还是处于禁用状态,再决定是否执行后续操作。难点在于,像 React、Next.js 等现代前端框架,通常会为 CSS 类名自动追加随机哈希片段,例如 buySellOrder_bso21ProductOption__9UpPt 和 buySellOrder_bso21MisDisabled__86CjY。这时,如果仍然使用“完整 class 名称完全匹配”的传统 XPath 写法,定位往往很容易失效。
因此,更推荐采用语义化、抗干扰能力更强的 XPath 写法:优先匹配可预测、相对稳定的类名片段,例如 buySellOrder 和 Disabled,而不是依赖完整的动态哈希类名。
✅ 推荐 XPath 表达式如下:
//*[@class[contains(., "buySellOrder") and not(contains(., "Disabled"))] and contains(text(), "Intraday")]