CSS和XPATH选择器对比

1、优缺点比较

特性 CSS选择器 XPath
语法复杂度 简洁易读 较为复杂
性能 通常更快 可能较慢
向上遍历 不支持 支持(可选择父元素)
文本内容选择 有限支持 完全支持
索引选择 支持(:nth-child) 支持(position())
浏览器兼容性 优秀 良好
可读性 中等

2、何时使用CSS选择器

  • 当需要简洁易读的选择器时
  • 当性能是关键考虑因素时
  • 当只需要向下或横向遍历DOM时
  • 当元素有良好的ID、类或属性时

3、何时使用XPath

  • 当需要基于文本内容选择元素时
  • 当需要向上遍历DOM(选择父元素)时
  • 当需要复杂的条件逻辑时
  • 当元素没有唯一的ID或类时

4、选择器对比示例

以下是一些常见场景下CSS选择器和XPath的对比示例:

场景 CSS选择器 XPath
按ID选择 #username //*[@id="username"]
按类选择 .btn-primary //*[@class="btn-primary"]
按属性选择 [data-testid="submit"] //*[@data-testid="submit"]
按文本选择 不直接支持 //button[text()="提交"]
包含文本 不直接支持 //div[contains(text(), "错误")]
父元素选择 不直接支持 //input[@id="email"]/parent::div
第n个子元素 li:nth-child(3) //li[position()=3]
多条件选择 input[type="text"][required] //input[@type="text" and @required]