CSS Selector

XPath与CSS Selector的差别

上一篇文章中总结了web自动化测试中用xpath来进行元素定位的方法,那么CSS Selector又是什么鬼? 
其实,对于使用者来讲,哪个用的习惯就选哪个。总的来说,XPath更强大,而CSS选择器通常语法比较简洁,运行速度更快些。

TargetCSS 3XPath
所有元素*//*
所有的P元素p//p
所有的p元素的子元素p > *//p/*
根据ID获取元素/转义/#id//*[@id= ‘id’]
根据Class获取元素.class//*[contains(@class, ‘class’)]
拥有某个属性的元素*[title]//*[@title]
所有P元素的第一个子元素p > *:first-child//p/*[0]
所有拥有子元素a的P元素无法实现//p[a]
下一个兄弟元素P + *//p/following-sibling::*[0]

由于Selenium使用xpath定位时采用遍历页面的方式,在性能上采用CSS选择器的方式更优。Xpath虽然性能指标较差,但是在浏览器中有比较好的插件支持,定位元素比较方便,对于性能要求严格的场景,可考虑通过xpath改写css的方式进行替换,比较以下2种方式:

XPATH地址: id('index')/div[2]/div/ul/div/li[2]/a
CSS选择器地址: #index div:nth-of-type(2) div ul li:nth-of-type(2) a
或者: #index>div:nth-of-type(2)>div>ul>li:nth-of-type(2)>a
  • 1
  • 2
  • 3

实战积累:

  • “>”表示直接子节点,“ ”空格表示任意子节点
css=div.resource-list>div:nth-child(1)>div:nth-child(1) div.progress
  • 1
  • 非隐藏
css=div:not(.hidden) div.resource-buttons
  • 1
  • 部分匹配
css=.dijitReset.dijitInline.dijitButtonText:contains("Join Event")

css=a[href*='/scheduledDeployment/45d67'] 包含了

css=a[href^='/scheduledDeployment/45d67'] 以xxx开头的

css=a[href$='/scheduledDeployment/45d67'] 以xxx结尾的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 如果class里带的空格,用.来代替空格如:
 <button class="x-btn-text module_picker_icon">...
 可以这样写: css=button.x-btn-text.module_picker_icon
  • 1
  • 2
  • 3
  • 子节点和兄弟节点
div+p:  紧接在 <div> 元素之后的所有 <p> 元素
p~ul:  前面有 <p> 元素的每个 <ul> 元素
p:nth-of-type(2):  第二个 <p> 元素
p:nth-last-child(2):  父元素的倒数第二个 <p> 子元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值