• Selenium


    由于最新版火狐不在支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/ 下载49版本以下的火狐就可以增加Firebug等扩展了。

    什么是Xpath?

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

    工具

    Xpath可以下载火狐浏览器插件FireBug

    用法:

    1. /(绝对路径,从根节点选取) 
    2. //(相对路径,所有子代节点,不用考虑是否直接子节点) 
    3. @ 选取属性 
    4. “.”选取当前节点 
    5. “..”选取当前节点的父节点

    使用方法:

    注://* 代表定位页面下所有元素,固定模式 @引用某样属性 id ='xxx'

    1、Xpath支持ID、Class、Name定位功能,将 * 换位任意标签名,则可根据标签进行筛选

    通过ID定位
     
    //*[@id='i1']
    //div[@id='i2']
     
    通过Class定位
     
    //*[@class='inner']
    //div[@class='inner1']
     
    通过Name定位
     
    //*[@name='name']
    //input[@name='name']
    class包含xxx的div
    //div[contains(@class,’xxx’)] 

    2. 如果标签没有ID、Class、Name三总属性,Xpath还支持属性定位功能

    //*[@placeholder='请输入用户名']

    3. 当标签页重复时,Xpath提供了层级过滤

    支持通过 / 进行层级递进,找到符合层级关系的标签
    //input[@value=text][8]  ->>第8个input的value=text

    //div[@class='inner'][3]/input[@type='text']
    当层级都重复时,可以通过单个层级的属性进行定位

    //div[@
    class='driver'][1]/div[@class='inner'][3]/input

    4. 一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。Xpath提供了索引过滤

    通过索引,在List中定位属性,与python的索引有些差别,Xpath从1开始
     
    //select[@name='city'][1]/option[1]

    5. 上面集中如果都用上了之后还重复的话,我们就可以使用Xpath提供的终极神器,逻辑运算定位。and 或 or

    通过and来缩小过滤的范围,只有条件都符合时才能定位到
     
    //select[@name='city' and @size='4' and @multiple="multiple"]
     
    or就相反了,只要这些筛选中,其中一个出现那么久匹配到了
     
    //select[@name='city' or @size='4']

     

    Xpath拓展

    following-sibling: 选择当前节点之后的所有同级节点,那么没有加上“sibling”关键字的,搜索的就是之上/之下的所有节点,忽略同级概念,例如:

    <div>
    <input id="123">
    <input>    
    </div>

    要定位第二个input://input[@id=’123’]/following-sibling::input

    • preceding-sibling: 选取当前节点之前的所有同级节点

    • starts-with: 以某某开头,例如://input[starts-with(@class,’xxx’)]

    • 绝对路径 html/body/div/span[2]/input[2] 中间结构变化,就失效

    • 相对路径 //开始,在整个html source里找,不管在什么位置

    • 索引[x] //div/input[2] div下面第二个input

    • 完全匹配 xpath=//*[text()=”Join”]

    • not关键字 就是否定的意思 
      比如找一个id不为123的input:input[not[id=’123’]] 
      又如找一个文本中不包含xxx字段的span://span[not(contains(text(),’xxx’))]

    • 通配符 * 
      比如//span[@*=”xxx”]指定位span中任意属性包含xxx的 
      比如//[@=”xxx”]指定位页面中任意属性保护xxx的标签

  • 相关阅读:
    Linux常用命令
    cookie机制、session机制
    http状态码、错误分析
    安装“Microsoft SQL Server 2014 Management Objects”时报错"Error Writing to file: Microsoft.SqlServer.XEvent.Linq.dll."
    Installshield build all installer in development computer
    C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程
    由hibernate配置cascade而导致的软件错误,并分析解决此问题的过程
    由hibernate配置inverse="true"而导致的软件错误,并分析解决此问题的过程
    JVM原理解析
    Add lombok to IntelliJ IDEA
  • 原文地址:https://www.cnblogs.com/nancyzhu/p/8947339.html
Copyright © 2020-2023  润新知