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

猜你喜欢

转载自www.cnblogs.com/yyht-xgy/p/12088262.html