请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 175|回复: 1

Xpath和CSS定位对比

[复制链接]

26

主题

29

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2022-5-25 20:16:15 | 显示全部楼层 |阅读模式

xpath定位和css定位对比

实际项目中使用较多的是xpath定位和css定位。XPath是XML文档中查找结点的语法,换句话就是通过元素的路径来查找这个元素。xpath比较强大,而css选择器在性能上更优,运行速度更快,语法上更简洁。比较两种方法:

直接子元素

XPATH中的直接子元素是使用“/”定义的,而在CSS上,它是使用“>”定义的。

XPATH://div/inputCSS: div>input
  • 1
  • 2

后代元素

如果一个元素在另一个元素的内部(子元素或者孙元素),则它在XPATH中使用“//”定义,而在CSS中仅使用空格定义。

XPATH://div//inputCSS: div input
  • 1
  • 2

ID定位

XPATH中的元素id使用以下内容定义:"[@id=‘kw’]",而在CSS中使用:"#kw"。

XPATH://input[@id='kw']CSS: input#kw
  • 1
  • 2

CLASS定位

对于class属性,XPATH类似id,而CSS中用一个点表示。

XPATH://input[@class="s_ipt"]CSS: input.s_ipt
  • 1
  • 2

弟弟元素:following-sibling 继兄弟

这对于表单元素非常有用,即页面中位于同一父节点内的下一个相邻元素。

XPATH://input[@class="s_ipt"]/following-sibling::aCSS:input[class="s_ipt"+a
  • 1
  • 2

哥哥元素:preceding-sibling 前兄弟

页面中位于同一父节点内的上一个相邻元素。

XPATH://a[@name='tj_baike']/preceding-sibling::aCSS:无法实现
  • 1
  • 2

父节点元素

页面中位于一个节点的上级元素。

XPATH: //input/parentCSS: 无法实现
  • 1
  • 2

属性值

我们可以根据任何属性值定位元素。

XPATH: //input[@name='username']CSS: input[name='username'
  • 1
  • 2

多个属性值

我们甚至可以通过多个属性来定位元素。

XPATH: //input[@name='rsv_spt' and @value="1"]CSS: input[name='login'[type='submit'
  • 1
  • 2

第一个子元素

XPATH: //div[@id='u1']/a[1]CSS: div#u1 a:first-child
  • 1
  • 2

最后一个子元素

XPATH: //div[@id='u1']/a[last()]CSS: div#u1 a:last-child
  • 1
  • 2

第二个子元素

XPATH: //div[@id='u1']/a[2]CSS: div#u1 a:nth-child(2)
  • 1
  • 2

模糊匹配

selenium中允许使用^=,$=*=进行部分字符串匹配。
  • 1

^=匹配前缀

XPATH: input[starts-with(@id,'user')CSS: input[id^='user'
  • 1
  • 2

$=匹配后缀

XPATH: input[ends-with(@id,'name')CSS: input[id$='name'
  • 1
  • 2

*=匹配包含

XPATH: input[contains(@id,'sernam')CSS: input[id*=sernam

回复

使用道具 举报

26

主题

29

帖子

191

积分

注册会员

Rank: 2

积分
191
 楼主| 发表于 2022-5-25 20:20:32 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-6-29 14:56 , Processed in 0.041656 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表