python+selenium学习笔记:xpath选择器

xpath选择器

''''
1-用途:
    不仅可以用来在HTML文档中选择节点,还可以在XML文档中选择节点(手机自动化中会用到)
2-特点
    语法非常像Linux系统中的路径,所以又叫做路径表达式

3-语法结构
    绝对路径表示法:
        从根节点(html)开始,路径分割符是/(斜杠,类似于linux中路径分割符)    
        如:/html/body/div/span
        表示对应路径下的span元素
    相对路径表示法:
        以//开头后面加元素名称, 用法类似于css中的后代选择器,可以把//对应css中空格
        如://span
        表示html文档下所有的span元素
        如://div//span
        表示方法类似于CSS中的 div span
    
    绝对路径与先对路径混合使用:
        如: //div/p/span
        p和span的位置确定的,分别属于div元素的子元素与孙元素
4-通配符 *
    与css中一致,星号(*),表示匹配所有元素
    用法://div/*  表示匹配div下面所有元素
    等价于css中的 div>*


5-属性选择器
    使用场景
    选择具有某个属性(值)的元素    
        表示方法
        //*[@属性] 表示选择具有某个属性的元素
        
        //*[@属性=”属性值“] 表示选择具有某个属性值的元素,属性值必须加引号(单引号双引号都可以)
    
        示例:
        //*[@style]  选择所有具有style属性的元素
        //p[@spec='len2'] 选择所有具有spec 值为 len2 的元素
        
        Tips:在xpath中没有表示id和class的特殊方法,id 、class 也是属性
        如:
        //div[@id="food"]
        //div[@class="cheese"]

    根据部分属性选择元素的方法有
    //*[contains(@属性,”value“)]
    表示属性包含value

    //*[starts-with(@属性,”value“)]
    表示属性以value开头
    子元素选择-单选
    使用场景
    选择属于其父元素的第n个某个 类型的子元素

    表示方法
    //*[n] 表示选择*的父元素下面第n个*类型元素  等价于 *:nth-of-type(n)
    或//*[position()=n]    
    
    示例:
    //p[2], 选择p的父元素下的第二个p元素,等价于 p:nth-of-type(2)

6-倒数下标表示方法
    使用场景:
    选择属于其父元素的倒数第n个某个 类型的子元素

    表示方法:
    //*[last()-n] 表示选择*的父元素下面倒数第n+1个*类型元素  等价于 *:nth-last-of-type(n)
    或//*[position()=last()-n] 
    示例:
    //span[last()-1]    属于其父元素的倒数第二个span  等价于 span:nth-last-of-type(1)
    //*[@id="food"]/span[last()]  #food元素下倒数第1个span
    //*[last()-1]   父元素下的倒数第二个元素(不限定类型)
    
7-子元素选择-多选
    使用场景
    选择属于其父元素的第m到n之间 某个类型的子元素
    
    表示方法
    //*[position()>1] 选择属于其父元素的第一个以后的*元素
    //*[position()<last()-1] 选择属于其父元素的倒数第二之前的*元素
    
    示例:
    //*[@id="food"]/*[position() > last()-3]   选择#food下倒数第四个到最后一个元素

8-组选择
    使用场景:
    用于多组xpath表达式组合来选择元素的情况
    表示方法
    <s1>|<s2>
    <s1>和<s2> 是两组xpath选择器
    示例:
    //p | //button  选择所有的p元素, button元素,等价于 p, button
    
    //p | //span | //div 选择所有的p元素, span元素和div元素,等价于 p, span,div
    
    Tips:  css和xpath的表达式不能混用

9-相邻兄弟选择
    使用场景
    根据同级元素选择其他的同级元素
    
    表示方法
    //*/following-sibling::*  选择*后面的兄弟元素  等价于  *~*
    //*/preceding-sibling::*  选择*前面的兄弟元素
    
    示例:
    //*[@id='food']/span/following-sibling::p   选择span元素后面的兄弟元素p
    //*[@id='food']/p/preceding-sibling::span   选择p元素前面的兄弟元素span

10-扩展
    //*[@id='food']/span/following-sibling::p[1]    
    span元素后面的第一个兄弟元素p
    //*[@id='food']/span/following-sibling::p[last()]  
    span元素后面的最远一个兄弟元素P
    
    //*[@id='food']/span/following-sibling::p[position()>1]  
    span元素后面的第2到最后一个兄弟元素p
    
    //*[@id='food']/p/preceding-sibling::span[1]
    p元素前面的第一个兄弟元素span
    
    //*[@id='food']/p/preceding-sibling::span[last()]
    p元素前面的最远的一个兄弟元素span
    
    //*[@id='food']/p/preceding-sibling::span[position()>1]
    
    p元素前面的第2个到最前面的一个兄弟元素span

11-父元素选择
    使用场景:
    根据子元素定位父元素
    
    表示方法
    //*/..  选择*的父元素,类似于linux中表示上层路径的方法
    示例:
    //p[@class="special"]/..
    选择//p[@class="special"]的父元素    
    //p[@class="special"]/../..
    选择//p[@class="special"]的父元素的父元素
'''''
发布了35 篇原创文章 · 获赞 4 · 访问量 927

猜你喜欢

转载自blog.csdn.net/qq_44891948/article/details/103054550