ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

xpath定位总结--精简版

2019-12-23 20:51:31  阅读:277  来源: 互联网

标签:xpath 定位 精简版 搜狗 标签 div 节点 属性


 基于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动态变化时舍弃

标签:xpath,定位,精简版,搜狗,标签,div,节点,属性
来源: https://www.cnblogs.com/yyht-xgy/p/12088262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有