zoukankan      html  css  js  c++  java
  • xpath定位总结--精简版

     基于html的文档目录结构进行定位元素。

     
     

    以上面的这端html代码为例讲解各种定位方法

    1.绝对路径:以/开头从根节点一直找到当前节点

                    定位第一个div里面的img标签:/html/body/div/img[@alt="div1-img1"]

                    其中[]里面是通过标签属性来确定要找到元素(img标签的alt属性)

                    绝对路径比较脆弱,变动结构后就容易变化,维护成本高,不建议使用。

    2.相对路径:以//开头的,根据要定位的元素的特征来定位的,div[@属性="属性值"]

                    定位第二个div里的input标签://input[@name="div2input"]

                    一般都会用相对路径

    3.索引定位:在找到一个集合结果后,通过索引定位第几个

                    定位第二个input标签://input[2]

                    如果页面中存在特征相同多个类似元素,此方法好用

    4.属性值定位:上面已经提到过了,就是在[]里面通过标签的属性来定位

                    定位“百度搜索”的超链接://a[@href="http://www.baidu.com"]

                    如果页面中的元素特征性较强,能够通过特征定位,此法好用

    5.使用模糊函数定位:contains(),第一个入参是属性,第二个是第一个参数中的属性值包含的内容

                    定位“搜狗搜索”超链接://a[contains(@href,"sougou")]

                    适用于属性值有部分内容固定的情况,比如搜狗搜索的超链接有可能变成

                    https://www.sougou.com,而不是http://www.sougou.com,此时就不用修改                    脚本 代码也能兼容变化了,此法好用

    6.轴定位:用::表示,选择当前节点的父节点(parent)、子节点(child)、祖先节点(ancestor)、子孙节点(descendant)、后节点(following)前节点(preceding)、后兄弟节点(following-sibling)、前兄弟节点(preceding-sibling)

                  

     
     

                        如上图,定位第一个div的img://div[1]/child::img

                        //div[1]定位到第一个div,它作为当前节点,找他的子节点中的img标签

                        此方法适用于相对位置较为固定的元素结构,此法好用

                        另:如果::后面是*,则表示取所有符合条件的元素

    7.文本text定位:通过html标签的文本定位的方法

                        定位文本内容等于“搜狗搜索”的a标签://a[text()="搜狗索索"]

                        text()可以用.来替代://a[.="搜狗搜索"]

                        常常结合contains函数://a[contains(.,"搜狗搜索")]

                        此法对于有text属性的标签好用,像div没有text属性,不能用



    备注:

    xpath运算符

    #定位 找到元素 -- 做到唯一识别
    #优先使用id
    #舍弃:有下标的出现、有绝对定位的出现、id动态变化时舍弃
  • 相关阅读:
    Codeforces Round #439 (Div. 2)
    Money Systems
    Stamps
    inflate
    多重背包问题
    AIM Tech Round 4 (Div. 2)
    September Challenge 2017
    树的重心
    百度之星2017初赛A
    树上的最大独立集
  • 原文地址:https://www.cnblogs.com/yyht-xgy/p/12088262.html
Copyright © 2011-2022 走看看