什么是xpath?
定义:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
绝对路径:从根目录开始,root
相对路径:在一个路径下,另外的路径以这个路径对参照
绝对和相对都是可以找到你要的文件和html元素
一般不要用绝对路径,要用相对路径
因为使用绝对路径只要前端改动任一元素,自动化测试代码就要跟着一起改
绝对路径太长,不方便管理管理
如何获取html页面xpath路径?
例如在任一网页输入F12 右键html选择Xpath路径
填写xpath: f中,点击elememt选项,ctrl + f
xpath
但是上图只能获取到绝对路径,在web自动化都是采用相对路径的
如果要找到头条首页的搜索框就要输入就可以使用
相对路径://input[@class="search-input"]
绝对路径://*[@id="root"]/div/div[2]/div[3]/div[1]/input
相比之下还是使用相对路径xpath比较好
相对路径的具体写法:
//标签名[@属性名="属性值"]
表达式 | 描述 |
nodename | 选取此节点的所有子节点 |
/ | 从根节点选取,绝对路径 |
// | 从匹配路径选取,相对路径 |
. | 选取当前节点//标签名[@属性名="属性值"]/.(用处不大) |
.. | 选取父节点//标签名[@属性名="属性值"]/.. |
@ | 选取属性 |
and | 使用多个条件//标签名[@属性名="属性值" and @属性名="属性值"] |
text() | |
contains() | |
索引 |
使用xpath查找元素原则:只寻找特征最明显的属性
组合条件:
id name class_name
例如头条号搜索框有 class 和placeholder属性,使用xpath 表达式:
//input[@class="search-input" and @placeholder="搜索站内资讯、视频或用户"]
以搜索框为例 父节点-子节点://div[@class="search-wrapper"]/input[@class="search-input"]
子-孙 节点://标签名[@属性名="属性值"]//标签名[@属性名="属性值"]
上节点:/..
//input[@class="search-input" and @placeholder="搜索站内资讯、视频或用户"]/..
/..用法
父-子节点
text 用法:
text格式://标签名[text()="文本"]
但是text用法缺点是当字符左右有空格时,就无法定位到文本元素。
text一般跟contains使用就可以避免问题:
格式:
//标签名[contains(text(),'文本内容')]或者//标签名[contains(@属性名,'属性值')
例如://a[contains(@属性名,"属性值")] tips:属性值不用全部写出来也可以
索引用法:
假设两个元素标签、属性、属性值是一样的,可以用索引
格式(//a[contains(@属性名,"属性值")])[1]或者(//标签名[@属性名="属性值"])[1]
tips:1.索引前面的搜索条件要加(),2、索引值是从[1]开始
轴运算:
以上的xpath 方法基本所有的元素都能找到,但是要写法显示更加明确,就需要用到轴运算
这边只大概提下web自动化最常用的三种
轴名称 | 结果 |
ancestor | 祖先节点包括父亲(只能是一个线下来的,没有旁支。比如说九代单传) |
following-sibling | 当前元素节点标签之后的所有兄弟节点,弟弟妹妹 |
preceding-sibling | 当前元素节点标签之间的所有兄弟节点,哥哥姐姐(sibling英文是兄弟) |
轴:你想通过一个元素找到另一个元素
轴=称呼:关系
//a//ancestor::div[@id="anony-nav"]
//标签名//上级::标签名[@属性=“属性值”]
文字理解:我要寻找标签名为a 的上级 它是:: 标签名[@属性="属性值"]
css选择器:
什么是css选择器?
input#id
input.classhame
input[prop=value]
input.class chilld子孙。
input.class>儿子,直系
xpath和css 选择器各有什么优势
css写法更简洁
css速度更快
css不支持文本定位
xpath 功能更强
对于复杂定位反而更简洁
声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者分享python测试自动化所有,原文出处。若您的权利被侵害,请联系删除。
本文标题:(pythonweb自动化测试)(pythonweb自动化测试第十四节)
本文链接:https://www.51qsb.cn/article/m78zb.html