当前位置: 首页 > news >正文

css selector

🌟 ‌核心语法与使用场景

CSS选择器通过‌元素属性、层级关系、状态‌精准定位元素,语法简洁高效。

1. 基础选择器
类型语法示例说明
ID#username定位id="username"的元素
Class.btn-primary定位class包含btn-primary的元素
属性精确匹配[type="submit"]匹配type属性为submit的元素
标签+属性组合input[placeholder]所有带placeholder属性的<input>
2. 层级关系
组合方式语法示例作用
后代选择器div .itemdiv内‌任意层级‌的.item元素
直接子元素ul > li仅匹配ul的‌直接子级<li>
相邻兄弟h2 + p紧接在h2之后‌的<p>元素
3. 伪类与状态
 

pythonCopy Code

# 匹配鼠标悬停状态
driver.find_element(By.CSS_SELECTOR, "a:hover")

# 匹配被选中的复选框
driver.find_element(By.CSS_SELECTOR, "input[type='checkbox']:checked")

# 匹配第一个子元素
driver.find_element(By.CSS_SELECTOR, "ul li:first-child")

🔍 ‌高级匹配技巧

1. 部分属性匹配
匹配方式语法示例说明
属性包含子串[class*="error"]class中含有error(如error-msg
属性以子串开头[id^="dynamic_"]iddynamic_开头
属性以子串结尾[href$=".pdf"]链接指向PDF文件
2. 转义特殊字符

若属性值含特殊符号(如#:、空格),需用引号包裹或转义:

 

pythonCopy Code

# 属性值含空格
driver.find_element(By.CSS_SELECTOR, '[data-test="user name"]')

# 转义冒号
driver.find_element(By.CSS_SELECTOR, 'div[data-id="\\:button1"]')

⚡ ‌CSS vs XPath 性能对比

场景CSS选择器优势XPath适用场景
简单属性组合语法简洁,解析速度快需要复杂逻辑(如文本内容匹配)
层级定位直接子级(>)效率高跨层级深度搜索(如//div//span
浏览器优化现代浏览器优先优化CSS旧版浏览器兼容性更好

🛠️ ‌调试工具

  1. 浏览器控制台验证‌:
     

    javascriptCopy Code

    // 检查匹配元素数量
    $$("button.primary[disabled]").length  
    // 查看具体元素
    $$("input#email")
    

  2. Selenium IDE‌:
    使用录制工具自动生成CSS选择器路径。

最佳实践

  1. 优先使用唯一属性‌(如iddata-testid)。
  2. 避免过度嵌套‌(如div > form > .field > input可能脆弱)。
  3. 动态内容‌使用部分匹配符(^$*)。

掌握CSS选择器可大幅提升自动化脚本的‌稳定性和执行效率‌! 🚀

http://www.dtcms.com/a/36754.html

相关文章:

  • docker部署go简单web项目(无mysql等附加功能)
  • Ubuntu从零创建Hadoop集群
  • FS800DTU联动OneNET平台数据可视化View
  • c#编程:SortedList与Dictionary的比较 与 选择
  • Vue3 + Vite + TS,使用 配置项目别名属性:server
  • 如何避免过度依赖某个云服务商
  • 什么是可重入,什么是可重入锁? 它用来解决什么问题?
  • 在vscode中编译运行c语言文件,配置并运行OpenMP多线程并行程序设计
  • ros进阶——强化学习倒立摆的PG算法实现
  • 高斯消元法
  • 如何通过云计算实现业务的持续创新?
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-validator.py
  • AI前端赋能医疗诊断:效率与精准的双重跃升
  • 社群团购平台的愿景构建与开源链动2+1模式S2B2C商城小程序应用探索
  • 【AI 接入工作流实操指南与示例解析】
  • 嵌入式软件数据结构(一)链表知识点专栏 附源码 附原理
  • 数据中心“失宠”与AI算力争夺加剧的深度剖析与未来展望
  • 可狱可囚的爬虫系列课程 14:10 秒钟编写一个 requests 爬虫
  • 【GESP】C++二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵
  • JMeter 的基础知识-安装部分
  • 介绍一下在自动驾驶 路径规划和 控制算法 详细一些
  • 生成与鼓励:解决多模态情绪识别对话中类别失衡的有效框架
  • 网络原理--TCP的特性
  • Java集合应用案例面试题
  • 品融电商解读:小红书KOC打法如何重构品牌增长新路径
  • Apache SeaTunnel 构建实时数据同步管道(最新版)
  • 问题记录,服务工厂模式的必要性
  • LangChain大模型应用开发:LangGraph快速构建Agent工作流应用
  • 无法打开数据库 CAUsers\Public\EPLAN(Data\翻译\Company name\Translate.mdb。
  • Golang学习笔记_38——享元模式