zoukankan      html  css  js  c++  java
  • 关于Xpath定位方法知道这些基本够用

    一、写在前面

    之前写过一些关于元素定位的文章,但是感觉都是很碎片,现在想做个整合,便有了这篇文章。

    二、xpath的定位方法

    关于Xpath定位方法,网上写的已经很成熟了,现已百度首页为例,如下图:

    再结合我之前所写整理如下。

    1、通过绝对路径方式定位

    /html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input
    

    2、通过相对路径方式定位

    //input
    

    3、通过元素索引定位

    //input[4]
    

    4、通过属性定位

    使用xpath属性定位(结合第2、第3中方法可以使用)

    //input[@id='kw']
    //input[@type='name' and @name='kw']
    

    5、通过部分属性值匹配

    //input[starts-with(@id,'k')] 
    //input[ends-with(@id,'w')] 
    //input[contains(@id,'w')]
    

    6、通过文本定位

    //a[text()='直播']
    

    三、关于xpath函数使用举例说明

    1、contains():

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

    2、text()

    //a[text()='baidu'] ,用text()函数来匹配节点
    

    3、last()

    book[last()] ,取xpath最后一个book元素
    book[last()-1] ,取xpath最后第二个book元素
    

    4、starts-with()

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

    5、not()

    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)]

    xpath中的ends-with无效,原因如下:

    ends-withxpath2.0的语法,可能你的浏览器还只支持1.0的语法。

    优秀不够,你是否无可替代

    软件测试交流QQ群:721256703,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


  • 相关阅读:
    [script]判定dd是否成功
    [script]判定某一个脚本是否正确执行
    [wifi]wifi模块的测试
    [其他]设计开发
    [应用]Linux下" >/dev/null 2>&1 "
    [log]利用logrotate对Linux log进行管理
    [sz,rz]使用sz/rz在两台Linux设备之间传输数据
    [Kernel]内核版本添加字符和内核版本'+'解决
    [Linux应用]Linux应用程序输出数据重定向到文件中
    [systemd]How To Use Systemctl to Manage Systemd Services and Units
  • 原文地址:https://www.cnblogs.com/longronglang/p/15048286.html
Copyright © 2011-2022 走看看