zoukankan      html  css  js  c++  java
  • Selenium2之XPath定位

    练手使用的Demo页面下载地址:http://pan.baidu.com/s/1o6078MI

    XPATH是一种选择器,XPATH在firefox中用firepath验证,XPATH常用符号说明 :

    / 表示绝对路径,绝对路径是指从根目录开始

    // 表示相对路径 . 表示当前层

    .. 表示上一层

    * 表示通配符

    @ 表示属性

    [] 属性的判断条件表达式

    在Demo上演示如下内容:

     /html/div ,没有节点可以被选择,因为/如果用在中间,表示绝对路径,是上一个节点的子结点,而html的子节点是head与body

     /html//div ,表示选择根目录下的所有的子孙后代节点中的div节点,//表示相对路径

     //div ,表示选择所有的div节点,可以想想/html//div与//div为什么结果是一样的!

     //div/div ,表示选择所有的div节点的子节点中含有div的节点

     //div/div/. ,表示选择//div/div节点的当前层的节点,与//div/div的结果相同

     //div/div/.. ,表示选择//div/div节点的上一层节点,也就是选择一个div节点,该div节点的子节点有div节点。有点绕口,但细细理 解,会恍然大悟的

     //div/div/* ,表示选择//div/div的所有子节点,//div/div会有两个匹配出来的节点,但为什么//div/div/*只有一个了呢?这是因为 第二个//div/div下面没有子节点了,所以只匹配出来了一个

     //div[@id='input'] ,表示选择一个id为’input’的div节点

     //div[@id='input']/input ,表示选择一个id为’input’的div节点的input子节点

     //table//input[@id='user'] ,表示选择table的子孙后代中id为user的input节点

     //input[@name='identity' and @class='Volvo'] ,有的节点,只用一个属性无法定位出来,必须要用到多个属性进行组合定位, 用连接符and。这个XPATH表示选择一个name为identity并且class为Volvo的input节点

     //input[@name='identity' or @class='Volvo'] ,这个多属性组合用的是or的连接符,这个XPATH表示选择一个name为identity ,或者class为Volvo的节点,所以,这个XPATH匹配出来了4个节点

     //input[@name='identity' or @class='Volvo'][1] ,我们刚知道了,//input[@name='identity' or @class='Volvo']匹配 出4个,我们只需要第一个,怎么办?加index即可://input[@name='identity' or @class='Volvo'][1],请注意,xpath的index是 以1开头的,并不是0,请切记!

     取最后一个,//input[@name='identity' or @class='Volvo'][last()]

    XPath的几个常用函数:

    1. contains (): //div[contains(@id,'in')]  ,表示选择id中包含有’in’的div节点

    2. text():由于一个节点的文本值不属于属性,比如“<a class=”baidu“ href=”http://www.baidu.com“>baidu</a>”, 所以,用text()函数来匹配节点://a[text()='baidu']

    3. last():前面已介绍

    4. starts-with(): //div[starts-with(@id,'in')] ,表示选择以’in’开头的id属性的div节点

    5. not()函数,表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))] ,表示匹配出name为identity并且 class的值中不包含a的input节点。 not()函数通常与返回值为true or false的函数组合起来用,比如contains(),starts-with()等 ,但有一种特别情况请注意一下:我们要匹配出input节点含有id属性的,写法如下://input[@id],如果我们要匹配出input 节点不含用id属性的,则为://input[not(@id)] 

  • 相关阅读:
    栈溢出笔记1.3 准备Shellcode
    聊聊手游的那些惊喜与惊吓
    GIS+=地理信息+容器技术(4)——Docker执行
    与AQS有关的并发类
    HDU 2102 A计划
    生产系统ELK日志采集系统
    datagrip离线安装驱动jar
    oracle无效索引重建
    18年总结及19年展望
    shell符号解释
  • 原文地址:https://www.cnblogs.com/leoliyue/p/4877040.html
Copyright © 2011-2022 走看看