• 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*='值']
  • 相关阅读:
    Spring@Profile注解
    day 32 子进程的开启 及其用法
    day 31 udp 协议SOCK_DGRAM
    day 30 客户端获取cmd 命令的步骤
    day 29 socket 理论
    day 29 socket 初级版
    有关 组合 继承
    day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
    新式类和经典类的区别
    day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法
  • 原文地址:https://www.cnblogs.com/laosun0204/p/9005553.html
Copyright © 2020-2023  润新知