xpath路径定位

preceding-sibling选择同级层所有节点向前查找

//div[@id='id1']/preceding-sibling::div/a

例如:“更多产”超链接的同级向上数第二个元素,即“登陆”超链接

 

following-sibling选择同级层所有节点向后查找

//div[@id='id2']/following-sibling::div/input

查找上一父节点..(两点)

//input[@name='name1']/..

动态查找如id=wpf_button_0101或文本包含 搜索01

//input[contains(@id,'wpf_button')]

//a[contains(text(),'搜索')]

多个属性定位表达式

//input[@value='Search'][@type='button']

//input[@value='Search' and @type='button']

 

XPath匹配含有指定文本的标签---contains的用法 - 暮良文王 - 博客园 (cnblogs.com)

文字没有被一个明确的标签包裹

<div>
  <ul id="side-menu">
    <li class="active">
      <a href="#">
        <i>DOI</i>
        卷期号:
        <span>xxxx</span>
      </a>
    </li>
  </ul>
</div>

再用上边的xpath表达式就到不到了, 不过可以借助string(), 将a标签里边的东西全部转换成字符串, 再用contains判断:

//ul[@id='side-menu']/li/a[contains(string(), '卷期号')]/text() 

XPath轴(XPath Axes)可定义某个相对于当前节点的节点集:

1、child 选取当前节点的所有子元素

2、parent 选取当前节点的父节点

3、descendant 选取当前节点的所有后代元素(子、孙等)

4、ancestor 选取当前节点的所有先辈(父、祖父等)

  • 举例:查找到对应位置后,向上再定位父、祖父级的元素后,再向下查找。
  • //*[@class="step_name"]//*[text()="abc"]/ancestor::*[@class="step_name"]//*[@type="checkbox"]

5、descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身

6、ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身

7、preceding-sibling 选取当前节点之前的所有同级节点

  • 举例:查找到节点后,向上查找同级span标签的元素
  • //*[@class="choose_step"]/preceding-sibling::span

8、following-sibling 选取当前节点之后的所有同级节点

  • 举例:查找到节点后,向下查找同级li标签的元素
  • //*[@class="choose_step"]/following-sibling::li

9、preceding 选取文档中当前节点的开始标签之前的所有节点

10、following 选取文档中当前节点的结束标签之后的所有节点

11、self 选取当前节点

12、attribute 选取当前节点的所有属性

13、namespace 选取当前节点的所有命名空间节点

posted @ 2017-10-17 22:04  毛毛虫也疯狂  阅读(936)  评论(0编辑  收藏  举报