Selenium xpath元素定位

一.概述

xpath是一种选择器,是一种xml路径语言,在自动化测试过程中能够准确的定位页面的元素,可以说xpath能解决99%的元素定位的问题。

 

二.Xpath常用符号说明

/ 表示绝对路径,绝对路径是指从根目录开始

//表示相对路径

.表示当前层

..表示上一层

*表示通配符

@表示属性

[]属性的判断条件表达式

 

三.常用的Xpath的写法

/html//div 表示选择根目录下的所有的子孙后代节点中的div节点,//表示相对路径

//div 表示选择所有的div节点

//div/div 表示选择所有的div节点的子节点中含有div的节点

//div[@id='input'] 表示选择一个id为’input’的div节点

//table//input[@id='user'] 表示选择table的子孙后代中id为user的input节点

//input[@name='identity' and @class='Volvo'] 选择一个name为identity并且class为Volvo的input节点

//input[@name='identity' or @class='Volvo'] 选择一个name为identity,或者class为Volvo的节点

//input[@name='identity' or @class='Volvo'][1] 选择第一个name为identity,或者class为Volvo的节点

//input[@name='identity' or @class='Volvo'][last()] 选择最后一个name为identity,或class为Volvo的

 

四.Xpath的几个常用函数

1.contains()://div[contains(@id,'in')] ,表示选择id中包含有’in’的div节点

2.text()://a[text()='百度搜索'] 或者//a[contains(text(),"百度搜索")]

3.last():div[last()-1]:倒数第二个

4.starts-with()://div[starts-with(@id,'in')] ,表示选择以’in’开头的id属性的div节点

5.not():表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))],表示匹配出name为identity并且class的值中不包含a的input节点。

 

五.Xpath的轴的概念

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

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

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

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

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

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

following 选取当前节点的结束标签时候的所有节点

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

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

parent 选取当前节点的父节点

preceding 选取当前节点开始标签之前的所有节点

priceding-sibling 选取当前节点之前的所有同级节点

self 选取当前节点

 

六.Xpath轴的用法

//div[@id='radio']//label[text()='Saab']/preceding-sibling::input[1] 选择label的text为Saab的节点之前的同级节点中为input节点的第一个

 

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

//input[@id=''kw]/ancestor::form[属性或索引]    ##input[@id=''kw]唯一

//input[ancestor::form[@id='form'] and @name='wd'][1]   ##form[@id='form']唯一,后面加属性[1]来限制

 

preceding-sibling:选取当前节点之前的所有同级节点。

//input[preceding-sibling::input[@id='kw'] and @name='rsv_spt']    ##input[@id='kw']唯一找其同级input

等于//input[@id='kw']/follow-sibling::input[@name='rsv_spt']

//div[preceding-sibling::div/div/a[contains(text(),'三星')]]/a[text()='删除']

 

descendent:选取当前节点的所有后代元素(子、孙等)。

//div[@id='dvContainer']/descendent::span[text(),'删 除']    ##id='dvContainer'唯一

 

following-sibling(当前节点结束后的所有兄弟姐妹):

//input[@id='kw']/following-sibling::input    ##选取input[@id='kw']节点结束后的所有input兄弟姐妹(同级)

 

child:选取当前节点的所有子元素。

//span[child::input[@id='su1']]    ##input[@id='su1']明确

ancestor: //input[@id='su1']/ancestor::span    ##效果等于上面

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值