• xpath笔记-转


    来自Xavier的笔记:https://segmentfault.com/u/lihanx  and https://segmentfault.com/q/1010000008883941

    菜鸟Xpath教程:http://www.runoob.com/xpath/xpath-tutorial.html

    一、基本语法

    1. 表达式

    nodename    # 节点名
    /           # 若在起始位置,则表明从根节点选取node;若不在起始位置,表明选取子节点,本意都是选取全部子节点
    //          # 从任意位置选取node节点
    @           # 选取属性
    *           # 通配符
    

    2.谓语

    [n]                  # 第n个
    [last()]             # 最后一个
    [position()<n]       # 第n个位置之前的全部指定节点
    node[@attr]          # 拥有attr属性的节点
    node[@attr='val']    # 属性attr的值为val的节点
    

    二、轴

    A/child::B ==> A/B         # 选取A节点的子节点B
    parent                     # 父节点
    descendant                 # 所有后代节点
    ancestor                   # 所有先辈节点
    descendant-or-self         # 所有后代元素及其本身
    preceding-sibling          # 所有先辈节点及其本身
    following-sibling          # 当前节点后面的同级节点
    preceding                  # 整个文档中,当前节点之前的所有节点
    preceding-sibling          # 父节点中,当前节点之前的所有同级节点
    following                  # 整个文档中,当前节点之后的所有节点
    self                       # 当前节点本身
    attribute                  # 当前节点的所有属性
    namespace                  # 当前节点所有的命名空间
    
    

    三、运算符

    |          # 并集
    +          # 加法
    -          # 减法
    *          # 乘法
    div        # 除法
    =          # 等于
    !=         # 不等于
    <          # 小于
    <=         # 小于
    >          # 大于
    >=         # 大于等于
    or         # 或
    and        # 与
    mod        # 取余
    

    四、示例

    element_dom.xpath(“/div”)
    # 选取根节点的子节点div(包含其全部后代节点)
    
    element_dom.xpath("//p")
    # 选取任意位置的p节点
    
    element_dom.xpath("//div[@class='title']")
    # 选取class值为title的div节点
    
    element_dom.xpath("//div[@class='item_list']//li/a/@href")
    # 选取任意位置的class为item_list的div节点 的全部子节点li 中a节点的href属性
    
    element_dom.xpath("/div/@name")
    # 选取div节点的name属性值
    
    element_dom.xpath("/div/descendant::text()")
    # 选取div节点全部后代节点的文本
    
    element_dom.xpath("//div/p|//ul/li/a")
    # 选取div节点的子节点pa 与 ul/li/a 的并集
    
    element_dom.xpath("//div/p[2]")
    # 选取div中名为p的子节点的第2个
    
    element_dom.xpath("//div/*[id='name']")
    # 选取div的子节点中id值为name的任意节点
    
    element_dom.xpath("(//div//p)[1]")
    # //div//p结果集中的第一个结果
  • 相关阅读:
    阻止a链接跳转的点击事件
    appium python版api
    Appium—python_ 安卓手机划屏幕操作
    appium-unittest框架中的断言
    Appium 服务关键字
    python mysql入库的时候字符转义
    python实现两个字典合并
    解决linux登录后总是时间过会就断开(解决ssh登录后闲置时间过长而断开连接)
    linux安装好redis,如何在window端访问?
    linux上安装redis
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7398689.html
Copyright © 2020-2023  润新知