Selenium定位元素的方法css和xpath的区别

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

selenium是一种自动化测试工具,它可以通过不同的定位方式来识别网页上的元素,如id、name、class、tag、link text、partial link text、css和xpath。

css和xpath是两种常用的定位方式,它们都可以通过元素的属性或者层级关系来定位元素,但是它们也有一些区别:

css:

  • css是级联样式表,它用于给HTML网页的不同元素添加样式。
  • css定位器可以直接用元素的id、class或者标签来定位,如#id、.class或者tag。
  • css也可以通过其他属性来定位,如name='value'或者type='text'。
  • css还可以通过层级关系来定位,如form#form>span>input表示选择form元素下id为form的子元素下span元素下的input元素。
  • css还可以通过索引来定位,如option:nth-child(1)表示选择第一个option子元素。
  • css还可以通过模糊匹配来定位,如input:contains('kw')表示选择包含kw的input元素。

xpath:

xpath是XML文档中查找节点的语法,它可以通过元素的路径来查找元素。

xpath定位器可以通过元素的任何属性来定位,如@id='value'或者@name='value'。

xpath也可以通过标签和属性的组合来定位,如input@id='kw'表示选择input标签且id为kw的元素。

xpath还可以通过层级关系来定位,如//div@id='china'/p表示选择div元素下id为china的子元素下的所有p元素。

xpath还可以通过索引来定位,如option1表示选择第一个option子元素

xpath还可以通过模糊匹配来定位,如//*contains(@href,'miitbeian')表示选择包含miitbeian的href属性的所有元素。

css和xpath的主要区别在于:

  • xpath可以通过子元素搜索父元素,css无法实现,css只能从父级往下级搜索。例如,//div@id='china'/parent::表示选择id为china的div元素的父元素,css没有这样的语法。
  • xpath可以按文本搜索元素,css不能。例如,//*text()='hao123'表示选择文本为hao123的所有元素,css没有这样的语法。
  • css比xpath更简单易读,执行速度更快,语法上更简洁。例如,#kw表示选择id为kw的所有元素,而xpath需要写成//*@id='kw'。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关推荐
Ivanqhz16 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
Mr. zhihao16 小时前
Deep Agent 架构深度解析:主Agent与子Agent完整交互机制与核心参数作用
python·ai·langgraph·deepagent
狗凯之家源码网17 小时前
iOS C2 V2 与 Python FastAPI 全链路远控系统深度评测
python·ios·fastapi
超级架构师17 小时前
让 Fortran 模型自己调用 Agent:原生 Fortran 2008 实现深度剖析
人工智能·python·架构·机器人·开源·fortran
小蒜学长17 小时前
基于Django+Vue喵汪联盟宠物领养系统的设计与实现(代码+数据库+LW)
后端·python·django·宠物领养系统·流程规范化
mewowaBc17 小时前
postman使用细则
测试工具·postman·偏差
云边有个稻草人17 小时前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
fanruitian17 小时前
pycharm 使用anaconda
ide·python·pycharm
Dwzun17 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
代码山河1 天前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目