Mayi_XPath编写规则学习

时间:2022-08-28 00:01:22
XPath编写规则学习
 
辅助工具:firefox安装findbugs,view Xpath
firefox :Xpath验证方式:$x("xpath"); 粘贴xpath语句回车即可
 
定位:
1、依靠自己属性,文本定位:
   //td[text()='test']
   //div[contains(@class,'test')]
   //input[@type='radio' and @value='1']
   //span[@name='bruce' and text()='bruce2'] 或 //span[@name='bruce'][ text()='bruce2'] --and关键字
   //span[@name='bruce' or text()='bruce2'] --or关键字
 
2、依靠父节点定位:
  //div[@class='test mytest']/div
  //div[@id='test']/div
 
3、依靠子节点定位
  //div[div[@id='test']] --寻找含有id=test的div的div
  //div[div[@name='test']]
  //div[p[@id='test']]
 
4、混合型定位
  //div[div[@name='test']]/img
  //td[a//font[contains(text(),'test')]]//input[@type='checkbox']
 
5、高级方法
       
   (1)following-sibling ---寻找紧跟定位到的元素的下一个元素
   例子://input[@id='1234']/following-sibling=input --定位紧跟id=1234的下一个的input元素,同级有效
             //input[@id='1234']/following-sibling::input ,input后可再跟条件
 
   (2)preceding-sibling ---寻找紧跟定位到的元素的上一个元素
   例子://input[@id='123']/preceding-sibling=span --定位紧跟id=123的上一个span元素
             //input[@id='1234']/preceding-sibling::input ,input后可再跟条件
 
     (3)starts-with --判断是否以某关键字开头
      例子://input[starts-with(@id,'test')]
     (4)contains -- 是否包含某关键字
       例子: //td[a//font[contains(text(),'test')]]//input[@type='checkbox']
     (5)not ---不包含某关键字
        例子://input[not(@id='1234')]
                  //span[not(contaions(text(),'xpath'))]
 
6、索引关键字,position,last
    (1)position()=2
             position()>3
             position()<5
       
      例子://div[@id='test']/span[2]或
                //div[@id='test']/span[position()=2] --正数第2个span
 
      (2)last()-1
 
       例子://div[@id='test']/span[last()-2] --倒数第2个span元素
 
7、根据属性定位
  //div[@class] --查找含有class属性的div
  //div[@class='test'] --查找含有class属性且class属性值为test的的div元素
 
8、不常用关键字
     (1)substring,语法:substring(str,start_postion,length) ,从1开始计算
           例子://div[@id='test']/span[substring(@name,3,5)='bruce'] --找name的第三位开始总共5位字母为bruce的span
 
     (2)substring-before ,语法:substring-before(str,substr)
           例子://div[@id='test']/span[substring-before(@class,'-')='spanclass'] --查找分割关键字前面的字符为spanclass的span
 
     (3)substring-after,语法:substring-after(str,substr)
            例子://div[@id='substring']/span[substring-after(@class,'-')='spanclass'] --查找分割关键字后面的字符为spanclass的span
 
9、通配符:*
      //span[@*='bruce']
      //*[@*='bruce']
      //*[@name='bruce']
 
10、axes 轴
   (1)parent 父节点
          例子://div[span[text()='+++test']]/parent::div[contaions(text(),'test')] --查找含有span的text为+++test的的div的父节点
                    //div[span[text()='+++test']]/parent::div/span[contaions(text(),'test')]
 
   (2)ancestor 祖先节点
          例子://div[span[text()='+++test']]/ancestor::div
     
   (3)descendant 孙子节点
           例子://div[span[text()='+++test']]/descendant::div --会将该节点下的所有div打印出来
                      //div[span[text()='+++test']]/descendant::div/span[contaions(text(),'test')]
 
   (4)following 将当前节点下后面所有的指定节点取出
            例子://div[text()='current NodeA']/following::div --会将current NodeA后面的所有的div取出来,后续的div可再加条件判断
       
   (5)preceding 将当前节点下前面所有的指定节点取出
            例子://div[text()='current NodeA']/preceding::div --会将current NodeA前面的所有的div取出来,后续的div可再加条件判断

Mayi_XPath编写规则学习的更多相关文章

  1. XPath编写规则学习

    XPath编写规则学习   辅助工具:firefox安装findbugs,view Xpath firefox :Xpath验证方式:$x("xpath"); 粘贴xpath语句回 ...

  2. modSecurity规则学习(四)——规则指令编写

    规则语言是使用9个指令实现: 语法:SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS] Variables 以下几种: Reg ...

  3. Drools 规则学习

    Drools 规则学习 在 Drools 当中,一个标准的规则文件就是一个以“.drl”结尾的文本文件,由于它是一个标准的文本文件,所以可以通过一些记事本工具对其进行打开.查看和编辑.规则是放在规则文 ...

  4. Angular2入门系列教程2-项目初体验-编写自己的第一个组件

    上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...

  5. 从零开始编写自己的C&num;框架(28)——建模、架构与框架

    文章写到这里,我一直在犹豫是继续写针对中小型框架的设计还是写些框架设计上的进阶方面的内容?对于中小型系统来说,只要将前面的内容进行一下细化,写上二三十章具体开发上的细节,来说明这个通用框架怎么开发的就 ...

  6. 从零开始编写自己的C&num;框架(27)——什么是开发框架

    前言 做为一个程序员,在开发的过程中会发现,有框架同无框架,做起事来是完全不同的概念,关系到开发的效率.程序的健壮.性能.团队协作.后续功能维护.扩展......等方方面面的事情.很多朋友在学习搭建自 ...

  7. 从零开始编写自己的C&num;框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  8. 从零开始编写自己的C&num;框架(25)——网站部署

    导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...

  9. 从零开始编写自己的C&num;框架(24)——测试

    导航 1.前言 2.不堪回首的开发往事 3.测试推动开发的成长——将Bug消灭在自测中 4.关于软件测试 5.制定测试计划 6.编写测试用例 7.执行测试用例 8.发现并提交Bug 9.开发人员修复B ...

随机推荐

  1. &lbrack;连载&rsqb;《C&num;通讯(串口和网络)框架的设计与实现》- 12&period;二次开发及应用

    目       录 第十二章     二次开发及应用... 2 12.1        项目配制... 3 12.2        引用相关组件... 4 12.3        构建主程序... 5 ...

  2. EF中使用SQL语句或存储过程&lpar;小笔记&rpar;

    1.无参数查询 var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToLis ...

  3. 插件二之页面加载进度条pace&period;js

    关于pace.js pace.js包含14样式,每种样式可以自定义颜色,官方下载中提供了几种颜色的主题,使用方式也很简单,引入pace的js文件跟所需样式文件即可 <link rel=&quot ...

  4. Spring4整合Hibernate4详细示例

    1. Spring整合Hibernate,主要是解决什么问题? a.让Spring提供的IOC容器来管理Hibernate的SessionFactory b.让Hibernate使用Spring提供的 ...

  5. View和ViewGroup的区别 -- Touch事件处理

    View.java源码: /frameworks/base/core/java/android/view/View.java View.java的 dispatchTouchEvent 方法: 经过一 ...

  6. Python中文

    在python中有两种默认的字符串:str和unicode.在Python中一定要注意区分"Unicode字符串"和"Unicode对象"的区别. 后面所有的& ...

  7. 在Ubuntu下添加自定义服务

    https://blog.csdn.net/xkjcf/article/details/78698232 在Ubuntu系统中添加自定义服务需要遵从设计启动脚本的模式,下面就是如何编写启动脚本的示例程 ...

  8. eclipse使用tomcat&colon;run启动项目时修改默认端口

    命令:-Dmaven.tomcat.port=8081 tomcat:run

  9. window&period;onload绑定多个事件 —— 两种解决方案

    前言 有些函数,必须在网页加载完毕后执行.比如:涉及DOM操作的. 网页加载完毕时会触发一个onload事件,将函数绑定到这个事件上即可. window.onload = myFunction; 问题 ...

  10. hive引入jar包--HIVE&period;AUX&period;JARS&period;PATH和hive&period;aux&period;jars&period;path

    hive需要引入包时?该怎么引入? 一.hive-site.xml中的hive.aux.jars.path 此配置项对于hive server有效,但是是不会作用到hive shell.也就是说即使你 ...