xpath和css selector的使用方法

什么是Xpath?

XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素

Xpath的练习建议安装火狐浏览器后,下载插件,FireBug和FirePath,谷歌浏览器可以下载ChroPath插件,进行定位,切换到XPath,默认死格式 先写//*代表定位页面下所有元素,[@id='kw'],尽量不要用xpath来定位,因为xpath是UI自动化中运行效率最慢,代码冗余最高的定位方式

1、Xpath支持ID、Class、Name定位功能

//*[@id='inner1'],@代表通过属性定位

//*[@class='inner']

//*[@name='name']

2、如果标签没有ID、Class、Name三种属性,Xpath还支持属性定位功能,只要你是唯一属性,就可以定位,无论是默认属性还是自定义属性,@代表以属性定位,后面可以接标签中任意属性

//*[@type='text']

3、当标签的属性重复时,Xpath提供了通过标签来进行过滤

*换为任意标签名,则可根据标签进行筛选,如页面中有多个input框,可以把*换成input,后面再写属性,整体的写法就是//input[@id='i1']

4、当标签页重复时,Xpath提供了层级过滤,例如:找不到儿子,那么就先找他的爸爸,实在不行可以再找他的爷爷,Xpath提供了索引过滤,通过索引,在List中定位属性,与python的索引有些差别,Xpath从1开始

支持通过/进行层级递进,找到符合层级关系的标签,只有xpath拥有角标定位,css没有这种方式

//*[@class='driver'][1]/div[2]/input

5、上面几种如果都用上了之后还重复的话,我们就可以使用Xpath提供的终极神器,逻辑运算定位。and或or,通过and来缩小过滤的范围,只有条件都符合时才能定位到

//input[@value='弹框' and @onclick='alertNow();']

or就相反了,只要这些筛选中,其中一个出现那么就匹配到了

//select[@name='city' or @size='4']

 

什么是Css Selector?

Css Selector定位实际就是HTML的Css选择器的标签定位,Css Selector的练习建议安装火狐浏览器后,下载插件,FireBug和FirePath,切换到CSS

1、Css Selector支持id、class的定位,与html中css定位相同

#后面直接写上id的值,如#i1,.代表class,class定位还提供了多个class定位,通过连续.来缩小范围.c1.c2.c3,.J_Cat.a-all.on有空格就输入.,也可以input#i1input.classname

2、Css Selector支持任意属性定位

属性定位方式与xpath相同,直接中括号,加上属性就可以了

[placeholder='div的id是inner1'],placeholder没有重复的

3、Css Selector提供了多属性组合过滤

Css Selector的多属性组合选择过滤,没有and,只需要多个[]连接就可以

select[name='city'][size='4'][multiple='multiple']

4、Css Selector也支持层级关系定位

Xpath的不同Css Selector通过>来区分层级的界定,如果定位到里面没有唯一的属性供css来定位,只能用到xpath

select>option[value='3']

5、Css Selector模糊匹配

^=匹配属性以什么开头
[href^='/bug-create']
$=匹配属性以什么结尾
input[value$='值']
*=匹配属性包含什么值
input[value*='值']
posted @ 2018-05-07 23:00  laosun0204  阅读(753)  评论(0编辑  收藏  举报