XPATH定位的一般使用方法

  • Post author:
  • Post category:其他





一、Xpath定位表达式的二种写法:





绝对定位:


以“/”开头,相对的是Dom文档的根节点。如,“/html/body/div[2]/div/…”,由于绝对路径不可靠,在页面改动的时候很容易使定位信息失效,所以不建议使用。在定位信息不好选,而需要做调试的时候可以作为临时定位方式



相对定位:


以“//”开头,相对的是当前的Dom文档,也可以是相对于当前所选取的节点对象。如,//*[@class=’hello’], 表示匹配当前Dom文档对象中所有class=’hello’的节点对象,或“//div[@class=’hello’]


//


*[contains(text(),’hi’)] 表示查找的节点在//div[@class=’hello’]下,没有层级关系,只要先定位//div[@class=’hello’]节点,在此节点之下所有包含文本为“hi”的节点都可以匹配到;




二、Xpath常用的定位方法:







以节点文本值作为定位基准














1、text








()








函数













文本完全匹配(精确匹配)






写法://span[text()=

















我是一个兵

















]:






匹配文本为“我是一个兵”的节点



该函数要求要查找的元素的


文本内容与页面中元素


实际的文本内容完全匹配


,如,要匹配text()=’hello’, 则页面中节点的文本值必须是’hello’,

且页面元素的文本内容不能有空格之类的






2、contains()函数













文本包含(模糊匹配)







写法: //a[contains(text(),

















新建应用

















)]:






匹配文本





包含





“新建应用”的节点

该函数要求要查找的元素的文本值只要


连续地完全包含


在页面元素实际的文本中即可匹配,包含的位置不限。




排除





包含指定文本值的节点:






not(contains()):







//a[not(contains(text(),’创建您的产品’)) and not(contains(text(),’立即注册使用’))]





文本定位用这二个基本就可以了





以节点属性作为定位基准













1、属性值完全匹配(精确匹配)  –







//元素名[@属性名=

















属性值

















]







:








2、属性值包含(模糊匹配) –







//元素名[contains(@属性名,

















属性值

















)]:









starts-with():






指定以什么开头,常用的





可以是节点的文本值





以什么开头,





也可以是节点的属性值





以什么开头





多条件选取定位














and 、 or












当用一个条件无法准确定位节点时,如有多个条件可选择,则可选择多条件:



and 、 or(


不常用) 关键字





多路径选择:




多路径用“


|


”表示,可用于利用不同的条件选取同一个节点的选取,也可用于选择不同的节点





not






()






函数的简单用法:




用于排除包含指定文本的节点,


not


也可用于排除指定的节点本身





相对当前所选节点定位:
























为基准定位:




Xpath中一个很重要的东东,叫“轴”,所谓“轴”就是在我们不能直接定位到一个想要的元素时,可以选取一个好定位的元素作为“中心点”,再围绕这个中心点去定位我们的目标元素,这个“中心点”就是轴。

在轴定位中,我们不可避免地要用到的如下几个东东:





兄弟节点定位写法:



//div/following-sibling::span  –  后兄弟节点

//span/preceding-sibling::div  –  前兄弟节点

/  – 子节点

/../div  – 父节点下的子节点

..  – 父节点

https://img-blog.csdnimg.cn/img_convert/c29eb629e445223a0cb52b3e9768ca23.png



版权声明:本文为tchtest原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。