CN114416603B - Ui元素测试方法、装置、存储介质和设备 - Google Patents
Ui元素测试方法、装置、存储介质和设备 Download PDFInfo
- Publication number
- CN114416603B CN114416603B CN202210327760.8A CN202210327760A CN114416603B CN 114416603 B CN114416603 B CN 114416603B CN 202210327760 A CN202210327760 A CN 202210327760A CN 114416603 B CN114416603 B CN 114416603B
- Authority
- CN
- China
- Prior art keywords
- attribute
- tested
- preset
- test
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种UI元素测试方法、装置、存储介质和设备,该方法为:在控制录制设备生成测试用例的过程中,在待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;在控制测试设备执行测试用例的过程中,依据Predicate属性、XPath属性以及image属性中的任意一个属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果。相较于现有技术,利用Predicate属性、XPath属性以及image属性作为查找依据查找待测UI元素,可靠性较高、且并不影响待测应用的正常运行,确保测试用例能够正常运行。
Description
技术领域
本申请涉及移动端应用领域,尤其涉及一种UI元素测试方法、装置、存储介质和设备。
背景技术
随着移动互联网的快速发展,基于移动设备的应用软件越来越多,为了应用程序的有效性,安全性,需要在投放市场前,对应用进行测试。与人工测试相比,测试自动化能够减少测试成本、并缩短测试周期。在移动端平台进行UI自动化测试时,需要对测试的应用通过记录操作进行录制,再通过记录操作进行回放。
在现有移动端平台的UI自动化测试过程中,测试平台会预先对UI元素进行相关操作(例如点击、移动以及滑动等),并基于UI元素的相关操作生成测试用例,而后再执行测试用例实现对相关操作的回放。然而,在实际执行测试用例时,测试平台经常无法查找到正确的UI元素,导致测试用例无法使用(可理解为无法执行),从而降低UI自动化测试的成功率。
发明内容
本申请提供了一种UI元素测试方法、装置、存储介质和设备,目的在于准确查找到UI元素,从而提高UI自动化测试的成功率。
为了实现上述目的,本申请提供了以下技术方案:
一种UI元素测试方法,包括:
在控制录制设备生成测试用例的过程中,在所述录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;其中,所述Predicate属性包括谓词字符串;所述谓词字符串基于所述UI元素所包含的预设元素属性生成;所述XPath属性包括路径;所述路径基于所述UI元素所包含的name属性以及所述UI元素所属层级生成;所述层级用于指示所述UI元素的元素类型;所述image属性包括字符串;所述字符串基于对预先截取的所述UI元素的截图进行编码得到;
在控制测试设备执行所述测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,并触发所述待测UI元素执行所述测试用例所示操作,得到所述测试用例的执行结果;所述待测UI元素为所述测试设备所安装的待测应用中,需要执行所述测试用例所示操作的UI元素;
基于所述执行结果,生成所述待测应用的测试报告,并将所述测试报告存储到预设数据库中。
可选的,所述基于所述UI元素所包含的预设元素属性生成所述谓词字符串的过程,包括:
获取所述UI元素所包含的预设元素属性的类型和值;
将所述预设元素属性的类型、预设运算符、所述预设元素属性的值进行组合,得到所述谓词字符串。
可选的,所述基于所述UI元素所包含的name属性以及所述UI元素所属层级生成所述路径的过程,包括:
在确定所述UI元素包含name属性的情况下,将所述name属性的值、预设字符串、预设运算符进行组合,得到所述路径;
在确定所述UI元素不包含所述name属性的情况下,获取所述录制设备所安装的待测应用所示各个所述UI元素之间的层级关系;
从所述UI元素所属层级开始,逐步遍历所述UI元素所属层级的上一级,直至遍历到所述UI元素所属的最上级,并按照由先到后的顺序,将所遍历的各个层级进行编排,生成所述路径。
可选的,所述依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,包括:
在确定所述待测UI元素包含Predicate属性的情况下,依据所述待测UI元素的Predicate属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素;
在确定所述待测UI元素不包含Predicate属性、且包含XPath属性的情况下,依据所述待测UI元素的XPath属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素;
在确定所述待测UI元素不包含Predicate属性以及XPath属性、且包含image属性的情况下,依据所述待测UI元素的image属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素。
可选的,还包括:
在确定所述待测UI元素包含ID属性的情况下,依据所述待测UI元素的ID属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素。
可选的,所述依据所述待测UI元素的image属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,包括:
对所述待测UI元素的image属性进行解码,得到目标截图;
截取所述测试设备的屏幕界面,并计算所述目标截图在所述屏幕界面中所处的坐标;
从所述屏幕界面所示的各个UI元素中,选取预设坐标属性包含所述目标截图在所述屏幕界面中所处的坐标的UI元素,作为候选UI元素;
截取各个所述候选UI元素的截图,并将每个所述候选UI元素的截图与所述目标截图进行比对,得到每个所述候选UI元素的可信度;
从各个所述候选UI元素中选取可信度最高的候选UI元素,作为所述待测UI元素。
可选的,还包括:
在确定所述待测UI元素不包含ID属性、Predicate属性、XPath属性以及image属性的情况下,向用户发送所述测试用例异常的提示。
一种UI元素测试装置,包括:
属性添加单元,用于在控制录制设备生成测试用例的过程中,在所述录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;其中,所述Predicate属性包括谓词字符串;所述谓词字符串基于所述UI元素所包含的预设元素属性生成;所述XPath属性包括路径;所述路径基于所述UI元素所包含的name属性以及所述UI元素所属层级生成;所述层级用于指示所述UI元素的元素类型;所述image属性包括字符串;所述字符串基于对预先截取的所述UI元素的截图进行编码得到;
元素查找单元,用于在控制测试设备执行所述测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,并触发所述待测UI元素执行所述测试用例所示操作,得到所述测试用例的执行结果;所述待测UI元素为所述测试设备所安装的待测应用中,需要执行所述测试用例所示操作的UI元素;
报告生成单元,用于基于所述执行结果,生成所述待测应用的测试报告,并将所述测试报告存储到预设数据库中。
一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行所述的UI元素测试方法。
一种UI元素测试设备,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行所述的UI元素测试方法。
本申请提供的技术方案,在控制录制设备生成测试用例的过程中,在录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性。在控制测试设备执行测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果。基于执行结果,生成待测应用的测试报告,并将测试报告存储到预设数据库中。相较于现有技术,利用待测UI元素的Predicate属性、XPath属性以及image属性作为查找依据,在测试设备所示的待测应用中查找到待测UI元素,可靠性较高、且并不影响待测应用的正常运行,确保测试用例能够正常运行,以使UI自动化测试的成功率得到有效提高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例提供的一种UI元素测试方法的流程示意图;
图1b为本申请实施例提供的一种UI元素测试方法的流程示意图;
图1c为本申请实施例提供的一种UI元素测试方法的流程示意图;
图1d为本申请实施例提供的一种屏幕界面示意图;
图2为本申请实施例提供的另一种UI元素测试方法的流程示意图;
图3为本申请实施例提供的一种UI元素测试装置的架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,现有的UI自动化测试过程包括如下步骤:
1、预先在计算机设备上安装测试平台,以使测试人员操控测试平台,对测试设备(例如安装有IOS操作系统的手机)和录制设备(例如安装有IOS操作系统的手机)下发操作命令;
2、在测试设备和录制设备上安装预设测试框架(例如XCTest),以使测试设备和录制设备均可被测试人员进行相关操作(例如启动待测应用、点击、滚动视图、获取UI元素、截屏等);
3、控制录制设备向待测应用下发操作命令,得到待测应用中UI元素的操作;
4、将UI元素的操作反馈给测试平台,以使测试平台基于UI元素的操作生成测试用例;
5、控制测试设备执行测试用例(即控制测试设备向待测应用下发同样的操作命令),生成测试报告,并将测试报告反馈给测试平台。
由上述UI自动化测试过程可见,测试用例大多基于UI元素的操作生成,为此,当测试平台控制测试设备执行测试用例时,还需查找到测试设备上的UI元素,然而,由于测试设备上UI元素自身属性不全,难以确保可以正确查找到UI元素,从而导致测试用例无法执行,使得UI自动化测试过程中断,影响自动化测试的效率和稳定性。
因此,本申请实施例提供了一种UI元素测试方法,用于有效查找到正确的UI元素,以确保测试用例能够正常执行,提高UI自动化测试的成功率。
如图1a、图1b和图1c所示,为本申请实施例提供的一种UI元素测试方法的流程示意图,应用于测试平台,包括如下步骤:
S101:在控制录制设备生成测试用例的过程中,判断录制设备所安装的待测应用所示的UI元素是否包含预设元素属性。
若录制设备所安装的待测应用所示的UI元素包含预设元素属性,则执行S102,否则执行S104。
其中,预设元素属性的类型至少包括label属性、name属性、value属性、type属性以及placeholder Value属性。一般来讲,label属性、name属性、value属性、type属性以及placeholder Value属性各自的用途,均为本领域技术人员所熟悉的公知常识,这里不再赘述。
S102:获取UI元素所包含的预设元素属性的类型和值,并将预设元素属性的类型、预设运算符、预设元素属性的值进行组合,得到谓词字符串。
其中,可以利用Predicate语法(即IOS操作系统提供的用于支持元素定位的算法),将预设元素属性的类型、预设运算符、预设元素属性的值进行组合,得到谓词字符串。
具体的,假设UI元素所包含的预设元素属性的数量为一个,且预设元素属性的类型为label属性,label属性的值为登录,则生成的谓词字符串可以为:label==“登录”。
假设UI元素所包含的预设元素属性的数量为一个,且预设元素属性的类型为name属性,name属性的值为登录,则生成的谓词字符串可以为:name==“登录”。
假设UI元素所包含的预设元素属性的数量为一个,且预设元素属性的类型为value属性,value属性的值为登录,则生成的谓词字符串可以为:value ==“登录”。
假设UI元素所包含的预设元素属性的数量为一个,且预设元素属性的类型为type属性,type属性的值为登录,则生成的谓词字符串可以为:type ==“登录”。
假设UI元素所包含的预设元素属性的数量为一个,且预设元素属性的类型为placeholder Value属性,placeholder Value属性的值为登录,则生成的谓词字符串可以为:placeholder Value ==“登录”。
假设UI元素所包含的预设元素属性的数量为多个,且所包含的预设元素属性的类型有label属性和name属性,label属性的值为登录,name属性的值为登录,则生成的谓词字符串可以为:label==“登录”AND name==“登录”。
需要说明的是,上述具体实现过程仅仅用于举例说明。
S103:将谓词字符串作为Predicate属性,添加到UI元素中。
在执行S103之后,继续执行S104。
S104:判断UI元素是否包含name属性。
若UI元素是否包含name属性,则执行S105,否则执行S106。
其中,name属性的用途,均为本领域技术人员所熟悉的公知常识,这里不再赘述。
S105:将name属性的值、预设字符串、预设运算符进行组合,得到路径,并将路径作为XPath属性,添加到UI元素中。
在执行S105之后,继续执行S108。
具体的,假设UI元素包含name属性,且name属性的值为登录,则生成的路径为:[@name=\“登录\”]。其中,@name代表预设字符串,=和\均代表预设运算符。进一步的,XPath属性具体为:XPath=“[@name=\“登录\”]”。
S106:获取录制设备所安装的待测应用所示各个UI元素之间的层级关系。
其中,层级关系用于指示各个UI元素所属层级的父子关系(即上下级关系),本申请实施例所示的层级,用于指示UI元素的元素类型,具体的,元素类型包括但不限于为按钮(Button)、视图(View)、窗口(window)、应用(Application)等。
S107:从UI元素所属层级开始,逐步遍历UI元素所属层级的上一级,直至遍历到UI元素所属的最上级,并按照由先到后的顺序,将所遍历的各个层级进行编排,生成路径,并将路径作为XPath属性,添加到UI元素中。
在执行S107之后,继续执行S108。
其中,假设某一个UI元素所属层级为XCUIElementTypeButton,该XCUIElementTypeButton的上一级层级具体为XCUIElementTypeView,XCUIElementTypeView的上一级层级具体为XCUIElementTypeApplication(即XCUIElementTypeButton的最上级),则按照由先到后的顺序,将所遍历的各个层级进行编排,所生成的路径具体为:
//XCUIElementTypeApplication/XCUIElementTypeView/XCUIElementTypeButton。
进一步的,XPath属性具体为:
XPath=//XCUIElementTypeApplication/XCUIElementTypeView/XCUIElementTypeButton。
需要说明的是,上述具体实现过程仅仅用于举例说明。
S108:截取UI元素的截图,并对UI元素的截图进行编码,得到UI元素的字符串。
其中,可以利用Base64编码算法,对UI元素的截图进行编码,得到UI元素的字符串。
S109:将字符串作为image属性,添加到UI元素中。
S110:在控制测试设备执行测试用例的过程中,判断待测UI元素是否包含ID属性。
若待测UI元素包含ID属性,则执行S111,否则执行S112。
其中,待测UI元素为测试设备所安装的待测应用中,需要执行测试用例所示操作的UI元素。一般来讲,ID属性的用途为,本领域技术人员所熟悉的公知常识,这里不再赘述。
S111:依据待测UI元素的ID属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示的操作,得到测试用例的执行结果。
在执行S111之后,继续执行S122。
S112:判断待测UI元素是否包含Predicate属性。
若待测UI元素包含Predicate属性,则执行S113,否则执行S114。
S113:依据待测UI元素的Predicate属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果。
在执行S113之后,继续执行S122。
其中,由于测试设备的操作系统为IOS系统,IOS系统支持Predicate定位,即可以利用待测UI元素的Predicate属性,在测试设备所安装的待测应用中查找到待测UI元素。
S114:判断待测UI元素是否包含XPath属性。
若待测UI元素包含XPath属性,则执行S115,否则执行S116。
S115:依据待测UI元素的XPath属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果。
在执行S115之后,继续执行S122。
其中,因为待测UI元素的XPath属性记录有路径,为此,可以利用路径查找到待测UI元素。一般来讲,基于现有公开的可扩展标记语言路径语言(Xml Path Language,XPath),可实现利用路径查找待测UI元素。
S116:判断待测UI元素是否包含image属性。
若待测UI元素包含image属性,则执行S117,否则执行S123。
S117:对待测UI元素的image属性进行解码,得到目标截图。
其中,对待测UI元素的image属性进行解码的具体实现原理,为本领域技术人员所熟悉的公知常识,这里不再赘述。
S118:截取测试设备的屏幕界面,并计算目标截图在屏幕界面中所处的坐标。
其中,可利用现有公开的OpenCV算法,计算目标截图在屏幕界面中所处的坐标。
可选的,在录制设备的屏幕像素和测试设备的屏幕像素相同的情况下,利用OpenCV算法提供的cv2.mathTemplate函数,对目标截图与屏幕界面进行模板匹配,得到目标截图在屏幕界面中所处的坐标。
在录制设备的屏幕像素和测试设备的屏幕像素不相同的情况下,预先利用现有的sift算法,对目标截图进行特征提取,得到第一特征图像,并对屏幕界面进行特征提取,得到第二特征图像,而后利用OpenCV算法提供的cv2.FlannBasedMatcher函数,对第一特征图像和第二特征图像进行特征匹配,得到第一特征图像在第二特征图像中所处的矩形区域,最后利用现有的knn算法,计算得出矩形区域在屏幕界面上的位置(包括该矩形区域的左上角点与预设横坐标轴之间的距离,以及该矩形区域的左上角点与预设纵坐标轴之间的距离),并基于该位置、目标截图的宽度和高度,生成目标截图在屏幕界面中所处的坐标。
需要说明的是,本申请实施例所示的坐标包括目标截图的左上角点与预设横坐标轴之间的距离、目标截图的左上角点与预设纵坐标轴之间的距离、目标截图的宽度和高度。具体的,目标截图在屏幕界面中所处的坐标,可以参见图1d所示。
S119:从屏幕界面所示的各个UI元素中,选取预设坐标属性包含目标截图在屏幕界面中所处的坐标的UI元素,作为候选UI元素。
其中,可以利用Predicate语法,选取预设坐标属性包含目标截图在屏幕界面中所处的坐标的UI元素,具体的,该语法的应用逻辑可以为:
predicateString='rect.x>='+str((int(x)))+'ANDrect.y>='+str((int(x)))+'ANDwdMaxX<'+str((int(x+width)))+'ANDwdMaxY<'+str((int(y+height)))。
在上述具体应用逻辑中,x代表目标截图的左上角点与预设横坐标轴之间的距离,y代表目标截图的左上角点与预设纵坐标轴之间的距离,width代表目标截图的宽度,height代表目标截图的高度。
S120:截取各个候选UI元素的截图,并将每个候选UI元素的截图与目标截图进行比对,得到每个候选UI元素的可信度。
其中,可利用现有公开的OpenCV算法,将每个候选UI元素的截图与目标截图进行比对,得到每个候选UI元素的可信度。在本申请实施例中,所谓的可信度用于指示候选UI元素的截图与目标截图的相似性,候选UI元素的截图与目标截图的相似性越高,则代表候选UI元素的可信度越高,候选UI元素为待测UI元素的可能性越高。
S121:从各个候选UI元素中选取可信度最高的候选UI元素,作为待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果。
在执行S121之后,继续执行S122。
S122:基于测试用例的执行结果,生成待测应用的测试报告,并将测试报告存储到预设数据库中。
S123:向用户发送测试用例异常的提示。
其中,若在测试设备中无法查找到待测UI元素,则需及时通知用户测试用例异常,以便及早做出相应处理,避免影响待测应用的UI测试。
综上所述,本实施例所示方案在测试用例的生成过程中,预先在待测应用中的UI元素添加Predicate属性、XPath属性以及image属性,在测试用例执行过程中,利用待测UI元素的Predicate属性、XPath属性以及image属性作为查找依据,在测试设备所示的待测应用中查找到待测UI元素,可靠性较高、且并不影响待测应用的正常运行,确保测试用例能够正常运行,以使UI自动化测试的成功率得到有效提高。
需要说明的是,上述实施例提及的S111,为本申请所述UI元素测试方法的一种可选的实现方式,此外,上述实施例提及的S123,也为本申请所述UI元素测试方法的一种可选的实现方式。为此,上述实施例提及的流程,可以概括为图2所述的方法。
如图2所示,为本申请实施例提供的另一种UI元素测试方法的流程示意图,包括如下步骤:
S201:在控制录制设备生成测试用例的过程中,在录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性。
其中,Predicate属性包括谓词字符串;谓词字符串基于UI元素所包含的预设元素属性生成;XPath属性包括路径;路径基于UI元素所包含的name属性以及UI元素所属层级生成;层级用于指示UI元素的元素类型;image属性包括字符串;字符串基于对预先截取的UI元素的截图进行编码得到。
S202:在控制测试设备执行测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果。
其中,待测UI元素为测试设备所安装的待测应用中,需要执行测试用例所示操作的UI元素。
S203:基于执行结果,生成待测应用的测试报告,并将测试报告存储到预设数据库中。
综上所述,本实施例所示方案在测试用例的生成过程中,预先在待测应用中的UI元素添加Predicate属性、XPath属性以及image属性,在测试用例执行过程中,利用待测UI元素的Predicate属性、XPath属性以及image属性作为查找依据,在测试设备所示的待测应用中查找到待测UI元素,可靠性较高、且并不影响待测应用的正常运行,确保测试用例能够正常运行,以使UI自动化测试的成功率得到有效提高。
与上述本申请实施例提供的UI元素测试方法相对应,本申请实施例还提供了一种UI元素测试装置。
如图3所示,为本申请实施例提供的一种UI元素测试装置的架构示意图,包括:
属性添加单元100,用于在控制录制设备生成测试用例的过程中,在录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;其中,Predicate属性包括谓词字符串;谓词字符串基于UI元素所包含的预设元素属性生成;XPath属性包括路径;路径基于UI元素所包含的name属性以及UI元素所属层级生成;层级用于指示UI元素的元素类型;image属性包括字符串;字符串基于对预先截取的UI元素的截图进行编码得到。
可选的,属性添加单元100具体用于:获取UI元素所包含的预设元素属性的类型和值;将预设元素属性的类型、预设运算符、预设元素属性的值进行组合,得到谓词字符串。
属性添加单元100具体用于:在确定UI元素包含name属性的情况下,将name属性的值、预设字符串、预设运算符进行组合,得到路径;在确定UI元素不包含name属性的情况下,获取录制设备所安装的待测应用所示各个UI元素之间的层级关系;从UI元素所属层级开始,逐步遍历UI元素所属层级的上一级,直至遍历到UI元素所属的最上级,并按照由先到后的顺序,将所遍历的各个层级进行编排,生成路径。
元素查找单元200,用于在控制测试设备执行测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在测试设备所安装的待测应用中查找到待测UI元素,并触发待测UI元素执行测试用例所示操作,得到测试用例的执行结果;待测UI元素为测试设备所安装的待测应用中,需要执行测试用例所示操作的UI元素。
可选的,元素查找单元200具体用于:在确定待测UI元素包含Predicate属性的情况下,依据待测UI元素的Predicate属性,在测试设备所安装的待测应用中查找到待测UI元素;在确定待测UI元素不包含Predicate属性、且包含XPath属性的情况下,依据待测UI元素的XPath属性,在测试设备所安装的待测应用中查找到待测UI元素;在确定待测UI元素不包含Predicate属性以及XPath属性、且包含image属性的情况下,依据待测UI元素的image属性,在测试设备所安装的待测应用中查找到待测UI元素。
元素查找单元200还用于:在确定待测UI元素包含ID属性的情况下,依据待测UI元素的ID属性,在测试设备所安装的待测应用中查找到待测UI元素。
元素查找单元200具体用于:对待测UI元素的image属性进行解码,得到目标截图;截取测试设备的屏幕界面,并计算目标截图在屏幕界面中所处的坐标;从屏幕界面所示的各个UI元素中,选取预设坐标属性包含目标截图在屏幕界面中所处的坐标的UI元素,作为候选UI元素;截取各个候选UI元素的截图,并将每个候选UI元素的截图与目标截图进行比对,得到每个候选UI元素的可信度;从各个候选UI元素中选取可信度最高的候选UI元素,作为待测UI元素。
元素查找单元200还用于:在确定待测UI元素不包含ID属性、Predicate属性、XPath属性以及image属性的情况下,向用户发送测试用例异常的提示。
报告生成单元300,用于基于执行结果,生成待测应用的测试报告,并将测试报告存储到预设数据库中。
综上所述,本实施例所示方案在测试用例的生成过程中,预先在待测应用中的UI元素添加Predicate属性、XPath属性以及image属性,在测试用例执行过程中,利用待测UI元素的Predicate属性、XPath属性以及image属性作为查找依据,在测试设备所示的待测应用中查找到待测UI元素,可靠性较高、且并不影响待测应用的正常运行,确保测试用例能够正常运行,以使UI自动化测试的成功率得到有效提高。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,程序执行上述本申请提供的UI元素测试方法。
本申请还提供了一种UI元素测试设备,包括:处理器、存储器和总线。处理器与存储器通过总线连接,存储器用于存储程序,处理器用于运行程序,其中,程序运行时执行上述本申请提供的UI元素测试方法,包括如下步骤:
在控制录制设备生成测试用例的过程中,在所述录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;其中,所述Predicate属性包括谓词字符串;所述谓词字符串基于所述UI元素所包含的预设元素属性生成;所述XPath属性包括路径;所述路径基于所述UI元素所包含的name属性以及所述UI元素所属层级生成;所述层级用于指示所述UI元素的元素类型;所述image属性包括字符串;所述字符串基于对预先截取的所述UI元素的截图进行编码得到;
在控制测试设备执行所述测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,并触发所述待测UI元素执行所述测试用例所示操作,得到所述测试用例的执行结果;所述待测UI元素为所述测试设备所安装的待测应用中,需要执行所述测试用例所示操作的UI元素;
基于所述执行结果,生成所述待测应用的测试报告,并将所述测试报告存储到预设数据库中。
具体的,在上述实施例的基础上,所述基于所述UI元素所包含的预设元素属性生成所述谓词字符串的过程,包括:
获取所述UI元素所包含的预设元素属性的类型和值;
将所述预设元素属性的类型、预设运算符、所述预设元素属性的值进行组合,得到所述谓词字符串。
具体的,在上述实施例的基础上,所述基于所述UI元素所包含的name属性以及所述UI元素所属层级生成所述路径的过程,包括:
在确定所述UI元素包含name属性的情况下,将所述name属性的值、预设字符串、预设运算符进行组合,得到所述路径;
在确定所述UI元素不包含所述name属性的情况下,获取所述录制设备所安装的待测应用所示各个所述UI元素之间的层级关系;
从所述UI元素所属层级开始,逐步遍历所述UI元素所属层级的上一级,直至遍历到所述UI元素所属的最上级,并按照由先到后的顺序,将所遍历的各个层级进行编排,生成所述路径。
具体的,在上述实施例的基础上,所述依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,包括:
在确定所述待测UI元素包含Predicate属性的情况下,依据所述待测UI元素的Predicate属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素;
在确定所述待测UI元素不包含Predicate属性、且包含XPath属性的情况下,依据所述待测UI元素的XPath属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素;
在确定所述待测UI元素不包含Predicate属性以及XPath属性、且包含image属性的情况下,依据所述待测UI元素的image属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素。
具体的,在上述实施例的基础上,还包括:
在确定所述待测UI元素包含ID属性的情况下,依据所述待测UI元素的ID属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素。
具体的,在上述实施例的基础上,所述依据所述待测UI元素的image属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,包括:
对所述待测UI元素的image属性进行解码,得到目标截图;
截取所述测试设备的屏幕界面,并计算所述目标截图在所述屏幕界面中所处的坐标;
从所述屏幕界面所示的各个UI元素中,选取预设坐标属性包含所述目标截图在所述屏幕界面中所处的坐标的UI元素,作为候选UI元素;
截取各个所述候选UI元素的截图,并将每个所述候选UI元素的截图与所述目标截图进行比对,得到每个所述候选UI元素的可信度;
从各个所述候选UI元素中选取可信度最高的候选UI元素,作为所述待测UI元素。
具体的,在上述实施例的基础上,还包括:
在确定所述待测UI元素不包含ID属性、Predicate属性、XPath属性以及image属性的情况下,向用户发送所述测试用例异常的提示。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种UI元素测试方法,其特征在于,包括:
在控制录制设备生成测试用例的过程中,在所述录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;其中,所述Predicate属性包括谓词字符串;所述谓词字符串基于所述UI元素所包含的预设元素属性生成,所述预设元素属性的类型包括label属性、name属性、value属性、type属性以及placeholder Value属性;所述XPath属性包括路径;所述路径基于所述UI元素所包含的name属性以及所述UI元素所属层级生成;所述层级用于指示所述UI元素的元素类型;所述image属性包括字符串;所述字符串基于对预先截取的所述UI元素的截图进行编码得到;
在控制测试设备执行所述测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,并触发所述待测UI元素执行所述测试用例所示操作,得到所述测试用例的执行结果;所述待测UI元素为所述测试设备所安装的待测应用中,需要执行所述测试用例所示操作的UI元素;
基于所述执行结果,生成所述待测应用的测试报告,并将所述测试报告存储到预设数据库中;
其中,在所述待测UI元素包含image元素时,依据所述待测UI元素的image属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,包括:
对所述待测UI元素的image属性进行解码,得到目标截图;
截取所述测试设备的屏幕界面,并计算所述目标截图在所述屏幕界面中所处的坐标;
从所述屏幕界面所示的各个UI元素中,选取预设坐标属性包含所述目标截图在所述屏幕界面中所处的坐标的UI元素,作为候选UI元素;
截取各个所述候选UI元素的截图,并将每个所述候选UI元素的截图与所述目标截图进行比对,得到每个所述候选UI元素的可信度;
从各个所述候选UI元素中选取可信度最高的候选UI元素,作为所述待测UI元素。
2.根据权利要求1所述的方法,其特征在于,所述基于所述UI元素所包含的预设元素属性生成所述谓词字符串的过程,包括:
获取所述UI元素所包含的预设元素属性的类型和值;
将所述预设元素属性的类型、预设运算符、所述预设元素属性的值进行组合,得到所述谓词字符串。
3.根据权利要求1所述的方法,其特征在于,所述基于所述UI元素所包含的name属性以及所述UI元素所属层级生成所述路径的过程,包括:
在确定所述UI元素包含name属性的情况下,将所述name属性的值、预设字符串、预设运算符进行组合,得到所述路径;
在确定所述UI元素不包含所述name属性的情况下,获取所述录制设备所安装的待测应用所示各个所述UI元素之间的层级关系;
从所述UI元素所属层级开始,逐步遍历所述UI元素所属层级的上一级,直至遍历到所述UI元素所属的最上级,并按照由先到后的顺序,将所遍历的各个层级进行编排,生成所述路径。
4.根据权利要求1所述的方法,其特征在于,所述依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,包括:
在确定所述待测UI元素包含Predicate属性的情况下,依据所述待测UI元素的Predicate属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素;
在确定所述待测UI元素不包含Predicate属性、且包含XPath属性的情况下,依据所述待测UI元素的XPath属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素;
在确定所述待测UI元素不包含Predicate属性以及XPath属性、且包含image属性的情况下,依据所述待测UI元素的image属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素。
5.根据权利要求4所述的方法,其特征在于,还包括:
在确定所述待测UI元素包含ID属性的情况下,依据所述待测UI元素的ID属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素。
6.根据权利要求4所述的方法,其特征在于,还包括:
在确定所述待测UI元素不包含ID属性、Predicate属性、XPath属性以及image属性的情况下,向用户发送所述测试用例异常的提示。
7.一种UI元素测试装置,其特征在于,包括:
属性添加单元,用于在控制录制设备生成测试用例的过程中,在所述录制设备所安装的待测应用所示的UI元素中,添加Predicate属性、XPath属性以及image属性;其中,所述Predicate属性包括谓词字符串;所述谓词字符串基于所述UI元素所包含的预设元素属性生成,所述预设元素属性的类型包括label属性、name属性、value属性、type属性以及placeholder Value属性;所述XPath属性包括路径;所述路径基于所述UI元素所包含的name属性以及所述UI元素所属层级生成;所述层级用于指示所述UI元素的元素类型;所述image属性包括字符串;所述字符串基于对预先截取的所述UI元素的截图进行编码得到;
元素查找单元,用于在控制测试设备执行所述测试用例的过程中,依据待测UI元素所包含的Predicate属性、XPath属性以及image属性中的任意一个属性,在所述测试设备所安装的待测应用中查找到所述待测UI元素,并触发所述待测UI元素执行所述测试用例所示操作,得到所述测试用例的执行结果;所述待测UI元素为所述测试设备所安装的待测应用中,需要执行所述测试用例所示操作的UI元素;
报告生成单元,用于基于所述执行结果,生成所述待测应用的测试报告,并将所述测试报告存储到预设数据库中;
所述元素查找单元,具体用于对所述待测UI元素的image属性进行解码,得到目标截图;截取所述测试设备的屏幕界面,并计算所述目标截图在所述屏幕界面中所处的坐标;从所述屏幕界面所示的各个UI元素中,选取预设坐标属性包含所述目标截图在所述屏幕界面中所处的坐标的UI元素,作为候选UI元素;截取各个所述候选UI元素的截图,并将每个所述候选UI元素的截图与所述目标截图进行比对,得到每个所述候选UI元素的可信度;从各个所述候选UI元素中选取可信度最高的候选UI元素,作为所述待测UI元素。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1-6任一所述的UI元素测试方法。
9.一种UI元素测试设备,其特征在于,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-6任一所述的UI元素测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210327760.8A CN114416603B (zh) | 2022-03-31 | 2022-03-31 | Ui元素测试方法、装置、存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210327760.8A CN114416603B (zh) | 2022-03-31 | 2022-03-31 | Ui元素测试方法、装置、存储介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416603A CN114416603A (zh) | 2022-04-29 |
CN114416603B true CN114416603B (zh) | 2022-07-12 |
Family
ID=81263400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210327760.8A Active CN114416603B (zh) | 2022-03-31 | 2022-03-31 | Ui元素测试方法、装置、存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416603B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110807325A (zh) * | 2019-10-18 | 2020-02-18 | 腾讯科技(深圳)有限公司 | 谓词识别方法、装置及存储介质 |
CN110908895A (zh) * | 2019-10-11 | 2020-03-24 | 深圳壹账通智能科技有限公司 | 页面自动化测试方法、装置、计算机设备及存储介质 |
CN114116441A (zh) * | 2020-12-30 | 2022-03-01 | 京东数科海益信息科技有限公司 | 一种ui界面测试方法、装置、电子设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101621092B1 (ko) * | 2008-07-15 | 2016-05-16 | 한국전자통신연구원 | 구조화된 정보의 장면 표시 장치 및 그 방법 |
CN104391797B (zh) * | 2014-12-09 | 2017-11-10 | 北京奇虎科技有限公司 | Gui控件的识别方法和装置 |
US9983984B2 (en) * | 2015-01-05 | 2018-05-29 | International Business Machines Corporation | Automated modularization of graphical user interface test cases |
CN106326101A (zh) * | 2015-07-06 | 2017-01-11 | 北京华大九天软件有限公司 | 一种基于qt的应用程序自动化测试方法 |
CN107085554B (zh) * | 2017-04-11 | 2019-09-20 | 武汉斗鱼网络科技有限公司 | 一种添加控件标识的方法和装置 |
CN110362482A (zh) * | 2019-06-21 | 2019-10-22 | 深圳壹账通智能科技有限公司 | 页面缺陷管理方法及终端设备 |
CN112783783A (zh) * | 2021-01-29 | 2021-05-11 | 广州繁星互娱信息科技有限公司 | 网页埋点方法、装置、设备及可读存储介质 |
CN112882933B (zh) * | 2021-02-09 | 2024-08-16 | 京东科技信息技术有限公司 | 脚本录制方法、装置、设备及存储介质 |
-
2022
- 2022-03-31 CN CN202210327760.8A patent/CN114416603B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908895A (zh) * | 2019-10-11 | 2020-03-24 | 深圳壹账通智能科技有限公司 | 页面自动化测试方法、装置、计算机设备及存储介质 |
CN110807325A (zh) * | 2019-10-18 | 2020-02-18 | 腾讯科技(深圳)有限公司 | 谓词识别方法、装置及存储介质 |
CN114116441A (zh) * | 2020-12-30 | 2022-03-01 | 京东数科海益信息科技有限公司 | 一种ui界面测试方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114416603A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341098B (zh) | 软件性能测试方法、平台、设备及存储介质 | |
CN109657431B (zh) | 用于识别用户身份的方法 | |
CN113032264A (zh) | 页面视图控件的检测方法及装置 | |
CN108446224B (zh) | 移动端上应用程序的性能分析方法、存储介质 | |
CN107784043B (zh) | 数据仓库数据表的监控方法、装置及系统 | |
CN115186274A (zh) | 基于iast的安全测试方法及装置 | |
CN110806980A (zh) | 一种检测方法、装置、设备及存储介质 | |
CN114020432A (zh) | 任务异常处理方法、装置及任务异常处理系统 | |
CN110990264A (zh) | Ui自动化测试的元素识别方法、装置、设备及存储介质 | |
WO2024174704A1 (zh) | 元素定位方法、装置、电子设备及存储介质 | |
CN110543429A (zh) | 测试用例调试方法、装置及存储介质 | |
CN112800194B (zh) | 一种接口变更识别方法、装置、设备及存储介质 | |
CN114035789A (zh) | 日志解析模板的生成方法、日志解析方法、装置及设备 | |
CN104657248A (zh) | Java线程堆栈分析方法及系统 | |
CN113254338A (zh) | 测试用例生成方法、装置及设备 | |
CN114416603B (zh) | Ui元素测试方法、装置、存储介质和设备 | |
CN112540925A (zh) | 新特性兼容性检测系统及方法、电子设备及可读存储介质 | |
CN112416735B (zh) | 一种应用程序检测方法、装置及终端设备、存储介质 | |
WO2023206873A1 (zh) | 基于抽象语法树的代码检测方法、装置、设备及存储介质 | |
CN115481025A (zh) | 自动化测试的脚本录制方法、装置、计算机设备及介质 | |
CN112003647B (zh) | 一种回收光猫的检测方法、装置、设备及存储介质 | |
CN112612469A (zh) | 一种界面元素的处理方法、装置和电子设备 | |
CN112417252B (zh) | 爬虫路径确定方法、装置、存储介质与电子设备 | |
CN115203060B (zh) | 一种基于iast的安全测试方法及装置 | |
CN111522737B (zh) | 一种前端界面的自动化测试校验方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |