当前位置:网站首页>阿里测试师用UI自动化测试实现元素定位
阿里测试师用UI自动化测试实现元素定位
2022-07-04 19:06:00 【小梧敲代码】
随着IT行业的发展,产品愈渐复杂,web端业务及流程更加繁琐,目前UI测试仅是针对单一页面,操作量大。为了满足多页面功能及流程的需求及节省工时,设计了这款UI 自动化测试程序。旨在提供接口,集成到蜗牛自动化测试框架,方便用例的设计。
目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代。让我们看看二者的对比:
接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整体而言投出产出比更高,因此在项目上的使用更广泛。
而UI自动化测试则是模拟用户在前端页面中的操作行为进行测试,虽然在执行过程中易收到其他因素的影响(如电脑卡顿,浏览器卡顿,网速等)而导致用例执行失败,且后期维护成本较高,但是UI自动化测试更贴近用户使用时的真实情况,也能够发现一些接口自动化无法发现的bug。
因此,在实际项目的自动化测试中,通常采用以接口自动化为主、系统稳定后通过UI自动化对重点业务流程进行覆盖的方案。而UI自动化的基础,就是元素定位。只有完成了元素定位,才可以操作定位到的元素,模拟手工测试进行一系列的页面交互,比如点击、输入等。
一、常用的元素定位方式
对于web端的UI自动化测试,元素定位通常使用selenium提供的以下8种定位方式:
id:根据id定位,是最常用的定位方式,因为id具有唯一性,定位准确快捷。
name:通过元素的【name】属性定位,会存在不唯一的情况。
class_name:通过class 属性名称进行定位。
tag_name:通过标签名定位,一般不建议使用。
link_text:专用于定位超链接元素(即a标签),需要完全匹配超链接的内容。
partial_link_text:同样用于定位超链接元素,但可以模糊匹配超链接的内容。
xpath:根据元素路径进行定位,分为绝对路径和相对路径,可以定位到所有目标元素。
css_selector:selenium官方推荐的元素定位方式,比xpath效率更高,但需要掌握一些css基础。
在实际的项目中,更推荐使用xpath和css定位方式,这两种可以定位到页面中的所有元素,使用限制较小。如果对css没有了解的话,推荐使用xpath的方式,上手更快;如果对css有一定基础的朋友,更推荐使用css进行元素定位。
接下来,以百度首页为例,在实际使用中对各种定位方式进行详细介绍。
二、元素定位的实际应用
以百度首页的搜索框为例,介绍id、name、class、tag_name四种元素定位方式。
1.id定位
通过id属性对百度首页的的输入框进行定位。
# 通过input标签的id属性进行定位
find_element_by_id('su')
2.name定位
通过name属性对百度首页的输入框进行定位。
# 通过input标签的name属性进行定位
find_element_by_name('wd')
3.class_name定位
通过class属性对百度首页的输入框进行定位。
# 通过input标签的class属性进行定位
ind_element_by_class_name('s_ipt')
4.tag_name定位
通过标签名称来定位,这种方式很少会使用,因为页面中的同一个标签通常都会重复。
# 通过input标签名进行定位
find_element_by_tag_name('input')
接下来,以页面底部的“意见反馈”为例,介绍linkText和partialLinkText两种定位方式。
5.linkText定位
通过a标签的文本信息进行定位,仅用于定位超链接a标签。
# 通过a标签的文本信息进行定位
find_element_by_link_text('意见反馈')
6.partialLinkText定位
通过对a标签的部分文本信息模糊匹配进行定位。
# 通过对a标签的部分文本信息模糊匹配进行定位
find_element_by_partial_link_text('反馈')
7.xpath定位
xpath定位方式是通过页面元素的属性和路径进行元素定位,理论上可以对页面中所有的元素精选定位。下面介绍xpath的几种定位方式。
首先,介绍一下xpath的路径节点表达式,如图:
(1) xpath绝对路径定位
仍已百度首页的搜索框为例进行介绍。
find_element_by_xpath(‘/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input’)
通常情况下,不会选择使用xpath绝对路径进行元素定位,原因有二:一是绝对路径繁琐冗长,影响运行速度;二是涉及的层级较多,任何一个层级发生变化都会导致定位失败,需要重新进行修改,不利于后期维护。
(2) xpath相对路径和元素属性结合定位
若目标元素的某个属性具有唯一性,则可直接对目标元素进行定位;否则,需要在目标元素附近寻找一个具有唯一性的元素,然后通过二者的层级关系进行定位。
接下来,依然以百度首页的页面元素为例,对xpath定位的方式举例说明。
# 通过元素属性定位百度首页的搜索框
find_element_by_xpath("//input[@id='su']")
find_element_by_xpath("//input[@name='wd']")
find_element_by_xpath("//input[@class='s_ipt']")
find_element_by_xpath("//input[@autocomplete='off']")
# 通过文本信息定位(和text_link方法不同,不局限于a标签)
find_element_by_xpath("//a[text()='意见反馈']")
find_element_by_xpath("//span[text()='设置']")
# 通过父级定位子级元素,举例百度首页搜索按钮
find_element_by_xpath("//span[@class='bg s_btn_wr']/input")
# 通过子级定位父级元素,举例百度首页百度热榜的换一换
find_element_by_xpath("//span[text()='换一换']/..")
# 通过contains方法模糊匹配定位,举例百度首页搜索按钮
find_element_by_xpath("//input[contains(@class,'s_btn')]")
find_element_by_xpath("//a[contains(text(),'反馈')]")
(3) 浏览器复制xpath
除了上述两个方法之外,还有一个简单的方法,就是在浏览器的F12开发者工具中找到目标元素,鼠标右键进行复制即可,如下图。
但复制的xpath路径可能会很冗长,还是推荐大家根据需求自己写目标元素的xpath路径。
8.css_selector定位
(1) css定位简介
css_selector定位(下文简称css定位),它的定位方式,利用选择器进行的。在CSS 中,选择器是一种模式,用于选择需要添加样式的对象。通过css进行元素定位,理论上也是可以定位到页面中的所有元素的。
和xpath相比,css的语法更简洁、定位速度更快,但是css的语法比xpath较为复杂一些,相对难记。
(2) css定位实例
下面,仍以百度首页搜索框为例,对css定位方式举例说明。
# 通过id定位,id名前加#
find_element_by_css_selector("#kw")
# 通过class定位,class名前加.
find_element_by_css_selector(".s_ipt")
# 通过标签定位
find_element_by_css_selector("input")
# 通过其它属性定位
find_element_by_css_selector("[name='wd']")
# 标签和属性组合定位
find_element_by_css_selector("input#kw")
find_element_by_css_selector("input.s_ipt")
find_element_by_css_selector("input[name='wd']")
find_element_by_css_selector("[name='wd'][autocomplete='off']")
# 通过父级定位子级元素
find_element_by_css_selector("from#form>span[@class='bg s_ipt_wr']>input")
三、小结
以上,就是selenium的各种元素定位方法的简单介绍。项目的实际使用中,在定位方法的选择上,比较推荐大家采用“id > name > xpath/css > 其它”的顺序进行选择。
虽然UI自动化测试没有接口自动化测试使用广泛,但也是自动化测试中不可获取的一部分,希望本文能对学习UI自动化的小伙伴产生一定的帮助。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
点击文末小卡片领取 |
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
自学推荐B站视频:
零基础转行软件测试:25天从零基础转行到入职软件测试岗,今天学完,明天就业。【包括功能/接口/自动化/python自动化测试/性能/测试开发】
边栏推荐
- js 闭包
- Win11怎么搜索无线显示器?Win11查找无线显示器设备的方法
- 电脑页面不能全屏怎么办?Win11页面不能全屏的解决方法
- Form组件常用校验规则-1(持续更新中~)
- Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
- Informatics Olympiad 1336: [example 3-1] find roots and children
- Six stones programming: about code, there are six triumphs
- 易周金融 | Q1保险行业活跃人数8688.67万人 19家支付机构牌照被注销
- Integretee integrates into Moonriver through xcm, bringing enterprise class privacy solutions to its ecosystem
- 复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
猜你喜欢
二叉树的四种遍历方式以及中序后序、前序中序、前序后序、层序创建二叉树【专为力扣刷题而打造】
[Beijing Xunwei] i.mx6ull development board porting Debian file system
电脑页面不能全屏怎么办?Win11页面不能全屏的解决方法
Qt五子棋人机对战画棋子之QPainter的使用误区总结
Employment prospects and current situation of Internet of things application technology
idea恢复默认快捷键
Detailed explanation of Audi EDI invoice message
Win11怎么搜索无线显示器?Win11查找无线显示器设备的方法
YOLOv5s-ShuffleNetV2
复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
随机推荐
Offset function and windowing function
Write it down once Net analysis of thread burst height of an industrial control data acquisition platform
2022 Health Exhibition, health exhibition, Beijing Great Health Exhibition and health industry exhibition were held in November
电脑页面不能全屏怎么办?Win11页面不能全屏的解决方法
Win11无法将值写入注册表项如何解决?
Win11U盘拒绝访问怎么办?Win11U盘拒绝访问的有效解决方法
[ismb2022 tutorial] the picture shows the precision medicine of learning. Marinka zitnik, Harvard University, keynote speaker, with 87 ppt
Wireshark network packet capture
Win11怎么搜索无线显示器?Win11查找无线显示器设备的方法
Win11共享文件打不开怎么办?Win11共享文件打不开的解决方法
Talking about cookies of client storage technology
go语言笔记(4)go常用管理命令
What is the application technology of neural network and Internet of things
Delete the characters with the least number of occurrences in the string [JS, map sorting, regular]
哈希(Hash)竞猜游戏系统开发功能分析及源码
电脑共享打印机拒绝访问要怎么办
Win11亮度被锁定怎么办?Win11亮度被锁定的解决方法
记录线上bug解决list(未完待续7/4)
Flet教程之 08 AppBar工具栏基础入门(教程含源码)
凌云出海记 | 一零跃动&华为云:共助非洲普惠金融服务