自动化测试8大元素定位之xpath语法(更新)

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 自动化测试8大元素定位之xpath语法(更新),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、八大定位方式

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

name:用户输入input,不出意外总会有name属性
通过name属性定位元素

class_name:通过class属性定位元素
id:通过id属性定位元素
1、同一个页面当中,某个id只能用一次,
2、如果元素有id,会优先使用id定位,
3、不好的消息,不是所有的元素都有id
link_text:通过<a>text</a>通过变迁中间的text文本定位元素
partial_link_text:通过<a>text</a>通过标签中间的text文本的部分内容定位元素
css_selector:通过匹配css selector定位元素

xpath:用的最多
//*[@id="s-top-left"]/a[3]: xpath表达式 相对路径: //开头
//*[@id="kw"]
/html/body/form/div/input[1] 绝对路径:/开头 必须从最开头的地方找
为什么叫路径?和操作系统的文件路径长的很像

二、选择定位器的通用原则

1、与研发约定的属性优先(id、class_name属性)
2、身份属性:id、name(web定位)
3、复杂场景使用组合定位:xpath、css、text文本
4、js定位

二、xpath表达式的语法

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

为什么?
1、因为绝对路径不稳定、
2、绝对路径更长,不好找
格式:
//找的标签名称[@属性名=‘属性值’]
以百度页面为例
在这里插入图片描述

例1:定义百度输入框,以下2种方法
第一种精确匹配
//input[@type=“text”]
第二种正则表达式匹配,*:代表正则表达式:通配符,表示匹配所有的标签名
//*[@type=“text”]

1、xpath组合条件

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

例2:还是定位百度输入框
格式:
//标签名[@属性名=‘属性值’ and @属性名=‘属性值’]
//*[@type=“text” and @class=“s_ipt”]

2、嵌套匹配

组合通过父亲找儿子关系(先找到上一级,再定位本级)
//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']

3、通过索引查找

xpath的索引是从1开始数的
xpath的计算索引的优先级很高
当通过//input[@type=“hidden”]可以定位多个元素的时候,加上索引
例:(//input[@type="hidden"])[3]
在这里插入图片描述

4、通过组合text文本

text不是用@符号,不是属性,是函数 text()
比对以下2种写法:
//a[text()=‘新闻’] text是方法名
//a[@text=‘师资团队’] text是属性名

例如:定位百度页面的图片超链接
//a[text()='图片']
在这里插入图片描述
//i[@title="清空"]
在这里插入图片描述

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

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

例:定位新闻超链接
通过text文本定位://a[contains(text(),'闻')] 模糊查找
在这里插入图片描述
通过属性名定位://a[contains(@class,'c-font-normal')]

在这里插入图片描述

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

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

7、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
如果有多个妹妹就需要索引查找了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123368.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!