首页 > 编程知识 正文

xpath定位按钮,怎么用xpath定位元素

时间:2023-05-05 08:48:02 阅读:235614 作者:2341

1. Xpath简介

Xpath不是selenium专用,只是作为一种定位手段,为selenium所用。Xpath是一门在xml文档中查找信息的语言。Xpath可用来在xml文档中对元素和属性进行遍历。由于html的层次结构与xml的层次结构天然一致,所以使用Xpath也能够进行html元素的定位。

2. Xpath定位方法

浏览器中如何找到元素
Chrome浏览器:按F12,将鼠标点击下图中的图标,再到浏览器页面上选择需要定位的元素,Elements页中就会自动定位高亮显示页面中的元素。

2.1 绝对路径定位

jmdsj,将Xpath表达式从html的最外层节点,逐层填写,最后定位到操作元素
类似:
/html/body/div[1]/div[2]/div[5]/div[1]/div[1]/form/span[2]/input
这个路径可以定位到百度按钮

这种方法,一旦路径有变化会导致定位失败,所以不推荐使用该方式。

2.2 相对路径定位

绝对路径与相对路径的差别与文件系统中的绝对和相对路径类似,相对路径是只给出元素路径的部分信息,在html的任意层次中寻找符合条件的元素。
语句以//开始
例如://*[@id=“su”]

通过相对路径定位元素,提取的是元素的部分特征,只要提取恰当,能够保证版本间稳定,是进行自动化测试的首选,示例中通过相对路径直接定位,实际使用中会结合属性等其他特征,共同定位。

2.3 索引号定位

/html/body/div[1]/div[2]/div[5]/div[1]/div[1]/form/span[2]/input
表示body下的第一个div

/html/body/div[1]/div[2]/div[5]/div[1]/div[1]/form/span[last()]/input
表示form下最后一个span

/html/body/div[1]/div[2]/div[5]/div[1]/div[1]/form/span[last()-1]/input
表示form下倒数第二个span

2.4 属性值定位

//*[@id=“kw” and @name=‘wd’]
表示 id 属性为 kw 且 name 属性为 wd

2.5 属性值模糊匹配定位

模糊匹配的函数有两种:

//label[starts-with(@class,‘btn’)]

//label[contains(@class,‘btn’)]

2.6 文本内容定位

文本内容的定位是利用html的text字段进行定位的方法,可以看做是属性值定位的衍生
//button[text()=‘下一步’]

由于“下一步”这几个字是浏览器界面就可以看到的,我们称为“所见即所得”,这种特征改的可能性非常小,所以非常未定,优先推荐使用。
与属性值类似,文本内容也支持starts-with和contains模糊匹配。

2.7 Axis定位



例如:
//form/div[last()-1]/ancestor::div[@class=‘modal-content’]

2.8 扩展

① Xpath定位扩展
使用通过子节点定位父节点
…代表父节点;…/…爷爷节点
//span[contains(text(),‘1.jpg’)]/…
② Xpath还支持zrdzfj定位
Xpath = //input[@id=‘kw1’ and @name=‘wd’]
可以and ,当然也可以or :
path = //input[@id=‘kw1’ or @name=‘wd’]

2.9 Xpath调试

如何知道Xpath表达式是否正确,是否可以找到元素呢?
可以在 console控制台进行Xpath的调试
以$x(“Xpath表达式”)进行

3. Xpath总结

Xpath的功能非常强大,不仅能够完成界面定位的任务,而且能保证稳定性,实际自动化测试中,能够识别界面元素是重要的,更重要的是要保证版本间的稳定性,减少脚本的维护工作。
如下规则请参考:
特征越少越好
特征越是界面可见的越好
不能使用绝对路径
避免使用索引号
擅用console调试
相对路径,属性值,文本内容,Axis可以任意组合,当然属性值和文本内容的模糊匹配也支持和上述方式任意组合,Axis可以嵌套使用。
通过Xpath的各种方式组合,能够解决selenium自动化测试中界面定位的全部问题,可以说:有了Xpath,再也不用担心元素定位了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。