python xpath定位和css定位对比

XPath和CSS定位在网页元素查找中各有优势。XPath提供更强大的表达能力,能处理复杂场景,如直接子元素、后代元素、ID、CLASS、属性值及父节点等定位,但性能相对较弱。CSS选择器则以其简洁语法和较快的运行速度受到青睐,尤其擅长直接子元素、后代元素和ID定位,但在处理某些复杂关系(如哥哥元素)时不如XPath。在实际项目中,理解并灵活运用两者能提高自动化测试和网页抓取的效率。
摘要由CSDN通过智能技术生成

xpath定位和css定位对比

xpath常见的定位方法
在这里插入图片描述

xpath定位和css定位对比

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

  • 直接子元素

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

XPATH://div/input
CSS: div>input
  • 后代元素

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

XPATH://div//input
CSS: div input
  • ID定位

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

XPATH://input[@id='kw']
CSS: input#kw
  • CLASS定位

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

XPATH://input[@class="s_ipt"]
CSS: input.s_ipt
  • 弟弟元素:following-sibling 继兄弟

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

XPATH://input[@class="s_ipt"]/following-sibling::a
CSS:input[class="s_ipt"]+a
  • 哥哥元素:preceding-sibling 前兄弟

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

XPATH://a[@name='tj_baike']/preceding-sibling::a
CSS:无法实现

 

在这里插入图片描述

  • 父节点元素

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

XPATH: //input/parent
CSS: 无法实现
  • 属性值

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

XPATH: //input[@name='username']
CSS: input[name='username']
  • 多个属性值

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

XPATH: //input[@name='rsv_spt' and @value="1"]
CSS: input[name='login'][type='submit'] 
  • 第一个子元素
XPATH: //div[@id='u1']/a[1]
CSS: div#u1 a:first-child
  • 最后一个子元素
XPATH: //div[@id='u1']/a[last()]
CSS: div#u1 a:last-child
  • 第二个子元素
XPATH: //div[@id='u1']/a[2]
CSS: div#u1 a:nth-child(2)
  • 模糊匹配
selenium中允许使用^=,$=或*=进行部分字符串匹配。
  • ^=匹配前缀
XPATH: input[starts-with(@id,'user')]
CSS: input[id^='user']
  • $=匹配后缀
XPATH: input[ends-with(@id,'name')]
CSS: input[id$='name']
  • *=匹配包含
XPATH: input[contains(@id,'sernam')]
CSS: input[id*=sernam]

总之,以上两种方法至少需要熟练其中一种。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值