一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于IOS系统的APP页面控件自动化方法及装置与流程

2021-12-15 02:05:00 来源:中国专利 TAG:
基于ios系统的app页面控件自动化方法及装置
技术领域
:1.本发明涉及一种基于ios系统的app页面控件自动化方法及装置,属于软件测试
技术领域
:。
背景技术
::2.flutter是google推出的跨平台ui框架,可以实现一套代码,多端复用。flutter技术的引入,使得原来需要为android、ios编写两套代码,现在仅需编写一套代码,提高了研发效率,虽然flutter技术能够提高研发效率,但仍需对不同平台的flutter页面进行测试。3.现有技术中,存在较多的测试方案,其中,flutterdriver缺少定位工具,代码维护成本高,需要使用不常见的dart语言,并且要花费较多的时间理解项目代码。而ai图片识别结合光学字符识别的方式,只能作为辅助,没有底层出发的控件识别快;难以准确的计算页面加载,且有一定的出错情况。现阶段,手机端的应用程序测试,缺少一个自动化的框架,电脑端和手机端的通信需要进行端口映射,灵敏度较低,测试效率也不高,无法实现电脑端和手机端的直接通信。如何实现app页面控件特别是flutter页面控件自动化,并且增加应用程序测试的可扩展性是一个亟待解决的技术问题。技术实现要素:4.为此,本发明提供一种基于ios系统的app页面控件自动化方法及装置,以解决手机端的应用程序测试,缺少一个自动化的框架,灵敏度和测试效率低,难以应对复杂多变场景的问题。5.为了实现上述目的,本发明提供如下技术方案:基于ios系统的app页面控件自动化方法,包括以下步骤:6.基于ios系统的app页面控件自动化方法,包括以下步骤:7.将待测试的应用程序安装在移动设备,所述移动设备运行有ios系统,启动所述移动设备的屏幕朗读,以暴露待测试的应用程序的界面元素;8.在所述移动设备构建跨域和域名解析的http服务器框架,对所述移动设备进行域名映射,通过所述http服务器框架进行域名映射后的移动设备和测试电脑端的通信;9.对所述移动设备运行待测试应用程序的过程进行屏幕快照,对所述屏幕快照进行遍历查询页面属性数据,所述测试电脑端向所述移动设备的http服务器框架发送待测试的应用程序操控请求;10.根据需要查询的页面属性数据找到对应页面属性数据的控件元素,根据所述控件元素的坐标信息进行页面属性触发操作。11.作为基于ios系统的app页面控件自动化方法的优选方案,通过gcdwebserver构建http服务器框架,在移动设备上实现跨域的http服务器;12.所述测试电脑端通过跨域http服务器和域名解析向所述移动设备发送通信请求,所述移动设备的http服务器向测试电脑端返回响应结果。13.作为基于ios系统的app页面控件自动化方法的优选方案,采用snapshot对所述移动设备运行待测试应用程序的过程进行屏幕快照,以snap变量作为根节点继续递归遍历所有的元素节点,遍历时取到每个节点的各个子节点的各个属性值;14.将应用程序的当前页面控件属性映射为哈希值,将所述哈希值作为当前页面的唯一标识符;获取待测试应用程序的实时只读镜像模拟应用程序运行事件;15.将得到的各个子节点的各个属性值进行拼接,将拼接后的字符串映射为所述哈希值;通过哈希值是否变化判断应用程序的界面变化情况。16.作为基于ios系统的app页面控件自动化方法的优选方案,所述哈希值还包括屏幕快照的二进制哈希或屏幕快照base64的字符串哈希,通过包含屏幕快照的二进制哈希或屏幕快照base64的字符串哈希的哈希值判断应用程序的界面变化情况。17.作为基于ios系统的app页面控件自动化方法的优选方案,判断应用程序的界面变化情况的步骤包括:18.获取页面哈希,判断哈希值是否变化;如果变化,判断当前哈希值是否已存在于哈希表中,若当前哈希值不存在于哈希表中,将当前页面的哈希结果作为所述哈希值;19.根据应用程序的界面变化情况进行应用程序的页面加载性能测试。20.作为基于ios系统的app页面控件自动化方法的优选方案,当所述哈希值中包含测试应用程序的启动页加载时间时,通过判断启动页的哈希值是否出现判断启动页是否加载完毕。21.作为基于ios系统的app页面控件自动化方法的优选方案,通过正则表达式将应用程序促销页面的页面倒计时字符串去除。22.作为基于ios系统的app页面控件自动化方法的优选方案,将所述移动设备中构建的http服务器伪装成ios系统允许持续运行的应用程序;23.所述持续运行的应用程序包括音乐播放器或地图定位软件。24.本发明还提供一种基于ios系统的app页面控件自动化装置,将待测试的应用程序安装在移动设备,所述移动设备运行有ios系统,包括:25.页面元素暴露模块,用于启动所述移动设备的屏幕朗读,以暴露待测试的应用程序的界面元素;26.服务器构建模块,用于在所述移动设备构建跨域和域名解析的http服务器框架,对所述移动设备进行域名映射,通过所述http服务器框架进行域名映射后的移动设备和测试电脑端的通信;27.应用程序处理模块,对所述移动设备运行待测试应用程序的过程进行屏幕快照,对所述屏幕快照进行遍历查询页面属性数据,所述测试电脑端向所述移动设备的http服务器框架发送待测试的应用程序操控请求;28.程序操控模块,用于根据需要查询的页面属性数据找到对应页面属性数据的控件元素,根据所述控件元素的坐标信息进行页面属性触发操作,获取待测试应用程序的实时只读镜像模拟应用程序运行事件。29.作为基于ios系统的app页面控件自动化装置的优选方案,通过gcdwebserver构建http服务器框架,在移动设备上实现跨域的http服务器;30.所述测试电脑端通过跨域http服务器和域名解析向所述移动设备发送通信请求,所述移动设备的http服务器向测试电脑端返回响应结果。31.作为基于ios系统的app页面控件自动化装置的优选方案,采用snapshot对所述移动设备运行待测试应用程序的过程进行屏幕快照,以snap变量作为根节点继续递归遍历所有的元素节点,遍历时取到每个节点的各个子节点的各个属性值;32.将应用程序的当前页面控件属性映射为哈希值,将所述哈希值作为当前页面的唯一标识符;获取待测试应用程序的实时只读镜像模拟应用程序运行事件;33.将得到的各个子节点的各个属性值进行拼接,将拼接后的字符串映射为所述哈希值;通过哈希值是否变化判断应用程序的界面变化情况。34.作为基于ios系统的app页面控件自动化装置的优选方案,所述哈希值还包括屏幕快照的二进制哈希或屏幕快照base64的字符串哈希,通过包含屏幕快照的二进制哈希或屏幕快照base64的字符串哈希的哈希值判断应用程序的界面变化情况。35.作为基于ios系统的app页面控件自动化装置的优选方案,判断应用程序的界面变化情况的步骤包括:36.获取页面哈希,判断哈希值是否变化;如果变化,判断当前哈希值是否已存在于哈希表中,若当前哈希值不存在于哈希表中,将当前页面的哈希结果作为所述哈希值;37.根据应用程序的界面变化情况进行应用程序的页面加载性能测试。38.作为基于ios系统的app页面控件自动化装置的优选方案,当所述哈希值中包含测试应用程序的启动页加载时间时,通过判断启动页的哈希值是否出现判断启动页是否加载完毕。39.作为基于ios系统的app页面控件自动化装置的优选方案,通过正则表达式将应用程序促销页面的页面倒计时字符串去除。40.作为基于ios系统的app页面控件自动化装置的优选方案,将所述移动设备中构建的http服务器伪装成ios系统允许持续运行的应用程序;41.所述持续运行的应用程序包括音乐播放器或地图定位软件。42.本发明具有如下优点:将待测试的应用程序安装在移动设备,移动设备运行有ios系统,启动移动设备的屏幕朗读,以暴露待测试的应用程序的界面元素;在移动设备构建http服务器框架,对移动设备进行域名映射,通过http服务器框架进行域名映射后的移动设备和测试电脑端的通信;对移动设备运行待测试应用程序的过程进行屏幕快照,对屏幕快照进行遍历查询页面属性数据,测试电脑端通过http服务器框架向移动设备发送待测试的应用程序操控请求;根据需要查询的页面属性数据找到对应页面属性数据的控件元素,根据控件元素的坐标信息进行页面属性触发操作。获取待测试应用程序的实时只读镜像模拟应用程序运行事件;将应用程序的当前页面控件属性映射为哈希值,将哈希值作为当前页面的唯一标识符,通过哈希值是否变化判断应用程序的界面变化情况,根据应用程序的界面变化情况进行应用程序的页面加载性能测试。本发明实现移动设备端的自动化,测试电脑端和移动设备能够直接进行通信,无需进行端口映射,灵敏度高,测试效率高,可扩展性强,通过本发明的自动化框架,可以进行页面加载时间测试,可以搜索flutter,html5等元素,无需人工介入,突破系统后台180s限制。附图说明43.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。44.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。45.图1为本发明实施例中提供的基于ios系统的app页面控件自动化方法流程示意图;46.图2为本发明实施例中提供的基于ios系统的app页面控件自动化中移动设备和测试电脑端通信示意图;47.图3为本发明实施例中提供的基于ios系统的app页面控件自动化中移动设备和测试电脑端通信示意图;48.图4为本发明实施例中提供的基于ios系统的app页面控件自动化实时只读镜像模拟应用程序运行事件示意图;49.图5为本发明实施例中提供的基于ios系统的app页面控件自动化装置示意图。具体实施方式50.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。51.实施例152.参见图1、图2和图3,提供基于ios系统的app页面控件自动化方法,包括以下步骤:53.s1、将待测试的应用程序安装在移动设备,所述移动设备运行有ios系统,启动所述移动设备的屏幕朗读,以暴露待测试的应用程序的界面元素;54.s2、在所述移动设备构建跨域和域名解析的http服务器框架,对所述移动设备进行域名映射,通过所述http服务器框架进行域名映射后的移动设备和测试电脑端的通信;55.s3、对所述移动设备运行待测试应用程序的过程进行屏幕快照,对所述屏幕快照进行遍历查询页面属性数据,所述测试电脑端向所述移动设备的http服务器框架发送待测试的应用程序操控请求;56.s4、根据需要查询的页面属性数据找到对应页面属性数据的控件元素,根据所述控件元素的坐标信息进行页面属性触发操作。57.本实施例中,基于xctestwd开源框架进行设计,xctestwd在xcode中执行xcuitest时启动一个监听服务器,可通过外部发送命令来创建待测app对应会话控制,并启动app,同时也能够实现dumptree和依据xml路径语言,id等来定位某个控件并操作这些控件。58.具体的,webdriveragent是由facebook开发的一套开源框架,用于端对端的ui测试,能同时支持模拟器和真机。由于webdriveragent采用objectc语言编写,而xctestwd是将wda翻译成了swift语言,故本发明的技术手段也可以应用在webdriveragent上。59.本实施例中,当启动移动设备的屏幕朗读,可以暴露待测试的应用程序的flutter界面元素,同时也支持非flutter界面。flutter是google开源的构建用户界面(ui)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、web、桌面和嵌入式平台。flutter开源、免费,拥有宽松的开源协议,适合商业项目。目前,flutter已推出稳定的2.0版本。60.具体的,ios系统中具有屏幕朗读辅助功能,通过打开屏幕朗读功能之后,用户可以通过屏幕朗读程序朗读所有可以看到的文字。而本发明通过启动具有ios系统的移动设备的屏幕朗读辅助功能,可以实现应用程序的flutter元素暴露,而这一技术手段的使用,是传统测试技术中均未发现或意识到的。61.本实施例中,通过gcdwebserver构建http服务器框架,在移动设备上实现跨域的http服务器;62.所述测试电脑端通过跨域http服务器和域名解析向所述移动设备发送通信请求,所述移动设备的http服务器向测试电脑端返回响应结果。63.具体的,gcdwebserver是基于gcd的轻量级服务器框架,用于内嵌到macos或者ios系统的应用中提供http1.1的服务。使用gcdwebserver可以在移动设备应用中搭建一个http服务器,无需端口映射,进而实现测试电脑端的快速访问;更加灵敏高效。通过域名映射;更加高效方便的跨域通过移动设备的名称直接进行电脑测试端的通信。64.辅助图4,本实施例中,采用snapshot对所述移动设备运行待测试应用程序的过程进行屏幕快照,以snap变量作为根节点继续递归遍历所有的元素节点,遍历时取到每个节点的各个子节点的各个属性值;65.将应用程序的当前页面控件属性映射为哈希值,将所述哈希值作为当前页面的唯一标识符;获取待测试应用程序的实时只读镜像模拟应用程序运行事件;66.将得到的各个子节点的各个属性值进行拼接,将拼接后的字符串映射为所述哈希值;通过哈希值是否变化判断应用程序的界面变化情况。67.具体的,获取待测试应用程序的实时只读镜像模拟应用程序运行事件。使用snapshot对所述移动设备运行待测试应用程序的过程进行屏幕快照,其核心代码如下:[0068]“internalstaticvarapp=xcuiapplication(privatewithpath:nil,bundleid:"jiexin.hec.com");[0069]letsnap=app!.mainwindowsnapshot()”。[0070]然后以snap这个变量作为根节点,可以继续通过snap.children继续不断递归遍历它下面所有的元素节点,遍历时可以取到每个节点的各个子节点的各个属性值:[0071]childsnapshot.wdname(),childsnapshot.wdlabel(),childsnapshot.wdtype等。[0072]通过把所有这些可以得到的属性值的字符串拼接起来,采用哈希算法映射为一个哈希值,比如用md5算法映射为哈希。可以不断的去查询屏幕前哈希值是否变化来判断界面的变化。[0073]具体的,在页面加载过程中如果页面不存在图片元素,可以优先用属性值串在一起的哈希,属性串在一起的哈希比图片哈希更快,更灵敏。在页面加载过程,如果图片数量较多,那么当属性串在一起的哈希不变的情况下,还需要考虑图片的哈希变化,这样可以把图片渲染的情况考虑进去。[0074]具体的,判断应用程序的界面变化情况的步骤包括:[0075]获取页面哈希,判断哈希值是否变化;如果变化,判断当前哈希值是否已存在于哈希表中,若当前哈希值不存在于哈希表中,将当前页面的哈希结果作为所述哈希值。比如hashtable[key]=value,key就是当前哈希值,value就是当前的耗费的时间,若当前哈希值存在于哈希表直接就返回hashtable[key]。[0076]本实施例中,所述哈希值还包括屏幕快照的二进制哈希或屏幕快照base64的字符串哈希,通过包含屏幕快照的二进制哈希或屏幕快照base64的字符串哈希的哈希值判断应用程序的界面变化情况。将屏幕快照的二进制哈希考虑到哈希值内,可以使测试结果更加的准确。[0077]本实施例中,当所述哈希值中包含测试应用程序的启动页加载时间时,通过判断启动页的哈希值是否出现判断启动页是否加载完毕。[0078]具体的,对于应用程序本身而言,很多页面是一闪而过的,如果一直等页面哈希不再变化为止的话,获得的哈希值不是想要的结果,比如启动页面一闪而过后,页面哈希会继续不断变化,直到启动页加载完成为止,这个时候的结果是把启动页加载时间也包含进去,必须判断启动页面的哈希值是否出现,出现的那一瞬间代表加载完毕。[0079]本实施例中,通过正则表达式将应用程序促销页面的页面倒计时字符串去除。[0080]具体的,对于应用程序本身而言,有的应用程序中某些页面是促销页面,比如页面中存在局部区域,类似还有一天56分36秒这样的时间在倒计时,这样会导致整个页面哈希值也在变化,页面其实也是早就加载完毕,而之前是把搜索的所有元素各种属性值拼接在一起形成哈希值,为了处理这种情形,可以用正则表达式,比如满足1天56分36秒此类样式,可以通过正则表达式判断如果符合这种形式的正则表达式,这个文本属性的哈希结果就不考虑在哈希值内。[0081]本实施例中,将所述移动设备中构建的http服务器伪装成ios系统允许持续运行的应用程序;[0082]所述持续运行的应用程序包括音乐播放器或地图定位软件。[0083]具体的,由于ios系统后台运行会在180秒使程序在后台退出,为了使http服务器能持续的运行,满足测试端电脑与移动设备的持续通信需求,将http服务器伪装成ios系统后台允许一直运行的播放无声音乐的音乐播放器。也可以将http服务器伪装成ios系统后台允许一直运行的地图定位软件。[0084]综上所述,本发明将待测试的应用程序安装在移动设备,移动设备运行有ios系统,启动移动设备的屏幕朗读,以暴露待测试的应用程序的界面元素;在移动设备构建http服务器框架,对移动设备进行域名映射,通过http服务器框架进行域名映射后的移动设备和测试电脑端的通信;对移动设备运行待测试应用程序的过程进行屏幕快照,对屏幕快照进行遍历查询页面属性数据,测试电脑端通过http服务器框架向移动设备发送待测试的应用程序操控请求;根据需要查询的页面属性数据找到对应页面属性数据的控件元素,根据控件元素的坐标信息进行页面属性触发操作。获取待测试应用程序的实时只读镜像模拟应用程序运行事件;将应用程序的当前页面控件属性映射为哈希值,将哈希值作为当前页面的唯一标识符,通过哈希值是否变化判断应用程序的界面变化情况,根据应用程序的界面变化情况进行应用程序的页面加载性能测试。本发明实现移动设备端的自动化,测试电脑端和移动设备能够直接进行通信,无需进行端口映射,灵敏度高,测试效率高,可扩展性强,通过本发明的自动化框架,可以进行页面加载时间测试,可以搜索flutter,html5等元素,无需人工介入,突破系统后台180s限制。[0085]实施例2[0086]参见图5,本发明实施例2还提供一种基于ios系统的app页面控件自动化装置,将待测试的应用程序安装在移动设备,所述移动设备运行有ios系统,包括:[0087]页面元素暴露模块1,用于启动所述移动设备的屏幕朗读,以暴露待测试的应用程序的界面元素;[0088]服务器构建模块2,用于在所述移动设备构建跨域和域名解析的http服务器框架,对所述移动设备进行域名映射,通过所述http服务器框架进行域名映射后的移动设备和测试电脑端的通信;[0089]应用程序处理模块3,对所述移动设备运行待测试应用程序的过程进行屏幕快照,对所述屏幕快照进行遍历查询页面属性数据,所述测试电脑端向所述移动设备的http服务器框架发送待测试的应用程序操控请求;[0090]程序操控模块4,用于根据需要查询的页面属性数据找到对应页面属性数据的控件元素,根据所述控件元素的坐标信息进行页面属性触发操作,获取待测试应用程序的实时只读镜像模拟应用程序运行事件。[0091]本实施例中,通过gcdwebserver构建http服务器框架,在移动设备上实现跨域的http服务器;[0092]所述测试电脑端通过跨域http服务器和域名解析向所述移动设备发送通信请求,所述移动设备的http服务器向测试电脑端返回响应结果。[0093]本实施例中,采用snapshot对所述移动设备运行待测试应用程序的过程进行屏幕快照,以snap变量作为根节点继续递归遍历所有的元素节点,遍历时取到每个节点的各个子节点的各个属性值;[0094]将应用程序的当前页面控件属性映射为哈希值,将所述哈希值作为当前页面的唯一标识符;获取待测试应用程序的实时只读镜像模拟应用程序运行事件;[0095]将得到的各个子节点的各个属性值进行拼接,将拼接后的字符串映射为所述哈希值;通过哈希值是否变化判断应用程序的界面变化情况。[0096]本实施例中,所述哈希值还包括屏幕快照的二进制哈希或屏幕快照base64的字符串哈希,通过包含屏幕快照的二进制哈希或屏幕快照base64的字符串哈希的哈希值判断应用程序的界面变化情况。[0097]本实施例中,判断应用程序的界面变化情况的步骤包括:[0098]获取页面哈希,判断哈希值是否变化;如果变化,判断当前哈希值是否已存在于哈希表中,若当前哈希值不存在于哈希表中,将当前页面的哈希结果作为所述哈希值;[0099]根据应用程序的界面变化情况进行应用程序的页面加载性能测试。[0100]本实施例中,当所述哈希值中包含测试应用程序的启动页加载时间时,通过判断启动页的哈希值是否出现判断启动页是否加载完毕。。[0101]本实施例中,通过正则表达式将应用程序促销页面的页面倒计时字符串去除。[0102]本实施例中,将所述移动设备中构建的http服务器伪装成ios系统允许持续运行的应用程序;[0103]所述持续运行的应用程序包括音乐播放器或地图定位软件。[0104]需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本技术实施例1中的方法实施例基于同一构思,其带来的技术效果与本技术方法实施例相同,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。[0105]虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献