1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 自动化测试8大元素定位之xpath语法

自动化测试8大元素定位之xpath语法

时间:2018-11-04 09:21:47

相关推荐

自动化测试8大元素定位之xpath语法

8大元素定位

tag_name:通过标签名称,找出来的元素太多了

name:用户输入input,不出意外总会有name属性

class_name

id

1、同一个页面当中,某个id只能用一次,

2、如果元素有id,会优先使用id定位,

3、不好的消息,不是所有的元素都有id

link_text:连接的文本,只能用来定位连接

partial_link_text

css_selector

xpath:用的最多

//*[@id="s-top-left"]/a[3]: xpath表达式 相对路径: //开头

//*[@id="kw"]

/html/body/form/div/input[1] 绝对路径:/开头 必须从最开头的地方找

为什么叫路径?和操作系统的文件路径长的很像

xpath表达式的语法

用/还是//,测试行业,选择相对路径,几乎不会选择绝对路径

为什么?

1、因为绝对路径不稳定、

2、绝对路径更长,不好找

格式:

//找的标签名称[@属性名=‘属性值’]

以百度页面为例

例1:定义百度输入框,以下2种方法

第一种精确匹配

//input[@type=“text”]

第二种正则表达式匹配,*:代表正则表达式:通配符,表示匹配所有的标签名

//*[@type=“text”]

xpath组合条件

组合属性:可以缩短查询范围,当定位一个元素,用一个属性名=属性值不能精确定位时,可以用组合属性定位

例2:还是定位百度输入框

格式:

//标签名[@属性名=‘属性值’ and @属性名=‘属性值’]

//*[@type=“text” and @class=“s_ipt”]

嵌套匹配

组合通过父亲找儿子关系(先找到上一级,再定位本级)

//span[@id=“s_kw_wrap”]/input[@type=“text”]

组合通过祖先找儿子关系(只要是本级的上级就可以)

//form[@id=‘form’]//input[@name=‘wd’]

通过儿子找父亲

//input[@id='kw']/..

通过儿子找祖先(比较麻烦,不推荐)

//input[@id='kw']/../../..

通过兄弟姐妹找(比较麻烦)

//input[@id='kw']/../[@class='soutu-btn']

通过索引查找

xpath的索引是从1开始数的

xpath的计算索引的优先级很高

当通过//input[@type=“hidden”]可以定位多个元素的时候,加上索引

例:(//input[@type="hidden"])[3]

通过组合text文本

text不是用@符号,不是属性,是函数 text()

比对以下2种写法:

//a[text()=‘新闻’] text是方法名

//a[@text=‘师资团队’] text是属性名

例如:定位百度页面的图片超链接

//a[text()='图片']

//i[@title="清空"]

通过函数组合contains(依据,值)

//a[contains(text(),'值')]模糊查找

//a[contains(@class,'值')]模糊查找

例:定位新闻超链接

通过text文本定位://a[contains(text(),'闻')]模糊查找

通过属性名定位://a[contains(@class,'c-font-normal')]

xpath定位,如何确定唯一性?

在源代码中ctrl+f,粘贴 查找

xpath:轴定位,轴运算

获取父亲://input[@type="text"]//parent::span

获取祖先://input[@type="text"]//ancestor::form

后面还可以加条件//input[@type="text"]//ancestor::form[@id='form']

同级查找,该元素(input)上方的,哥哥/姐姐

//input[@type="text"]/following-sibling::span

如果有多个哥哥就需要索引查找了

同级查找,该元素(input)下方的,妹妹/弟弟

//input[@type="text"]/preceding-sibling::span

如果有多个妹妹就需要索引查找了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。