CN106066793A - 标记语言生成装置及方法 - Google Patents
标记语言生成装置及方法 Download PDFInfo
- Publication number
- CN106066793A CN106066793A CN201610363671.3A CN201610363671A CN106066793A CN 106066793 A CN106066793 A CN 106066793A CN 201610363671 A CN201610363671 A CN 201610363671A CN 106066793 A CN106066793 A CN 106066793A
- Authority
- CN
- China
- Prior art keywords
- markup language
- node
- key attributes
- attributes field
- field
- 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.)
- Granted
Links
Classifications
-
- 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/33—Intelligent editors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种标记语言的生成装置,所述标记语言的生成装置包括:解析模块,用于将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;获取模块,用于获取所述树形图文件中各个节点的键值属性字段;添加模块,用于在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段;生成模块,用于根据所述标记语言属性字段生成各个控件的标记语言。本发明还公开了一种标记语言的生成方法。本发明提高了标记语言生成的智能性,以及提高了软件开发的效率。
Description
技术领域
本发明涉及终端技术领域,尤其涉及一种标记语言生成装置及方法。
背景技术
在智能终端的软件开发中,经常会使用软件测试框架进行自动化测试,执行测试任务来覆盖指定的用户场景,以自动化运行测试用例。目前的自动化测试工具很有多,例如Uiautomator、Appium等等。但是,现在在利用自动化测试工具进行终端自动化脚本编写的时候,可能出现控件无法定位的情况,如控件ListView下面的item,控件属性基本是一样的,此时只以资源Id、包名、类名及文本信息可能无法唯一定位一个控件,那么就需要人工编写Xpath(XML路径语言,也可称为可扩展标记语言路径语言)生成标记语言,以定位控件,而人工编写标记语言的方式,不仅智能性较低,并且对终端的软件开发效率也较低。
发明内容
本发明的主要目的在于提出一种标记语言生成装置及方法,旨在解决现有的软件开发过程,人工编写标记语言的方式,智能性较低,且软件开发效率低的技术问题。
为实现上述目的,本发明提供的一种标记语言生成装置,所述标记语言生成装置包括:
解析模块,用于将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;
获取模块,用于获取所述树形图文件中各个节点的键值属性字段;
添加模块,用于在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段;
生成模块,用于根据所述标记语言属性字段生成各个控件的标记语言。
可选地,所述添加模块包括:
封装子模块,用于对所述树形图文件中各个节点的键值属性字段进行封装;
添加子模块,用于在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段。
可选地,在各个节点的键值属性字段包括多个键值属性字段时,所述封装子模块包括:
确定单元,用于确定各个节点中各个键值属性字段的优先级;
提取单元,用于提取各个节点中预设个数的键值属性字段,其中,提取的键值属性字段的优先级高于未提取的键值属性字段的优先级;
封装单元,用于对各个节点提取的键值属性字段进行封装。
可选地,所述标记语言的生成装置还包括:
弹出模块,用于在检测到点击预设控件时,弹出所述控件的节点界面;
显示模块,用于在弹出的所述节点界面显示所述控件对应的标记语言。
可选地,所述标记语言的生成装置还包括:
定位模块,用于在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
此外,为实现上述目的,本发明还提出一种标记语言生成方法,所述标记语言生成方法包括:
将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;
获取所述树形图文件中各个节点的键值属性字段;
在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以根据所述标记语言属性字段生成各个控件的标记语言。
可选地,所述在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段的步骤包括:
对所述树形图文件中各个节点的键值属性字段进行封装;
在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段。
可选地,在各个节点的键值属性字段包括多个键值属性字段时,所述对所述树形图文件中各个节点的键值属性字段进行封装的步骤包括:
确定各个节点中各个键值属性字段的优先级;
提取各个节点中预设个数的键值属性字段,其中,提取的键值属性字段的优先级高于未提取的键值属性字段的优先级;
对各个节点提取的键值属性字段进行封装。
可选地,所述在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以根据所述标记语言属性字段生成各个控件的标记语言的步骤之后,所述标记语言的生成方法还包括:
在检测到点击预设控件时,弹出所述控件的节点界面;
在弹出的所述节点界面显示所述控件对应的标记语言。
可选地,所述在弹出的所述节点界面显示所述控件对应的标记语言的步骤之后,所述标记语言的生成方法还包括:
在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
本发明提出的标记语言生成装置及方法,解析模块将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件,获取模块获取所述树形图文件中各个节点的键值属性字段,添加模块在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,生成模块最终根据所述标记语言属性字段生成各个控件的标记语言,实现了在开发软件时,可在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以生成各个控件的标记语言,最终实现对控件的定位,而不是在控件没有定位标志时,需要人工编写标记语言来定位控件,本发明自动生成标记语言,提高了标记语言生成的智能性,也提高了软件开发的效率。
附图说明
图1为实现本发明各个实施例的终端的硬件结构示意图;
图2为本发明标记语言的生成装置第一实施例的模块示意图;
图3为传统的软件开发场景示意图;
图4为本发明标记语言的生成装置第二实施例的模块示意图;
图5为本发明标记语言的生成装置第三实施例的模块示意图;
图6为本发明标记语言的生成装置第四实施例的模块示意图;
图7为本发明生成标记语言较佳实施场景示意图;
图8为本发明标记语言的生成装置第五实施例的模块示意图;
图9为本发明标记语言的生成装置第六实施例的模块示意图;
图10为本发明标记语言的生成方法第一实施例的流程示意图;
图11为本发明标记语言的生成方法第二实施例的流程示意图;
图12为本发明标记语言的生成方法第三实施例的流程示意图;
图13为本发明标记语言的生成方法第四实施例的流程示意图;
图14为本发明标记语言的生成方法第五实施例的流程示意图;
图15为本发明标记语言的生成方法第六实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明各个实施例的终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的终端以及诸如数字TV、台式计算机等等的固定终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
图1为实现本发明各个实施例的终端的硬件结构示意。
终端100可以包括控制器110、A/V(音频/视频)输入单元120、用户输入单元130、电源单元140、输出单元150、存储器160和接口单元170等等。图1示出了具有各种组件的终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述终端的元件。
控制器110通常控制终端的总体操作。例如,控制器110执行与语音通话、数据通信、视频通话等等相关的控制和处理。另外,控制器110可以包括用于再现(或回放)多媒体数据的多媒体模块111,多媒体模块111可以构造在控制器110内,或者可以构造为与控制器110分离。控制器110可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
A/V输入单元120用于接收音频或视频信号。
用户输入单元130可以根据用户输入的命令生成键输入数据以控制终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、锅仔片、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏。
电源单元140在控制器110的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
接口单元170用作至少一个外部装置与终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别模块可以是存储用于验证用户使用终端100的各种信息并且可以包括用户识别模块(UIM)、客户识别模块(SIM)、通用客户识别模块(USIM)等等。另外,具有识别模块的装置(下面称为“识别装置”)可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到终端100内的一个或多个元件或者可以用于在终端和外部装置之间传输数据。
另外,当终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到终端的路径。从底座输入的各种命令信号或电力可以用作用于识别终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频信号、警报信号、振动信号等等)。输出单元150可以包括显示单元151。
显示单元151可以显示在终端100中处理的信息。例如,当终端100处于电话通话模式时,显示单元151可以显示与通话或其它通信(例如,文本消息收发、多媒体文件下载等等)相关的用户界面(UI)或图形用户界面(GUI)。当终端100处于视频通话模式或者图像捕获模式时,显示单元151可以显示捕获的图像和/或接收的图像、示出视频或图像以及相关功能的UI或GUI等等。
同时,当显示单元151和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元151可以用作输入装置和输出装置。显示单元151可以包括液晶显示器(LCD)、薄膜晶体管LCD(TFT-LCD)、有机发光二极管(OLED)显示器、柔性显示器、三维(3D)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为TOLED(透明有机发光二极管)显示器等等。根据特定想要的实施方式,终端100可以包括两个或更多显示单元(或其它显示装置),例如,终端可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。
存储器160可以存储由控制器180执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储器160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
存储器160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,终端100可以与通过网络连接执行存储器160的存储功能的网络存储装置协作。
这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器160中并且由控制器180执行。
至此,己经按照其功能描述了终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型终端等等的各种类型的终端中的滑动型终端作为示例。因此,本发明能够应用于任何类型的终端,并且不限于滑动型终端。
基于上述终端硬件结构,提出本发明标记语言的生成装置各个实施例。
参照图2,图2为本发明标记语言的生成装置第一实施例的模块示意图。
需要强调的是,对本领域的技术人员来说,图2所示模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图2所示的标记语言的生成装置的模块,可轻易进行新的模块的补充;各模块的名称是自定义名称,仅用于辅助理解该标记语言的生成装置的各个程序模块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的模块所要达成的功能。
本实施例提出一种标记语言的生成装置,所述标记语言的生成装置包括:
解析模块10,用于将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;
在本实施例中,首先先获取待处理界面的布局文件,所述待处理界面的布局文件可以为当前显示界面对应的布局文件,所述布局文件优选为xml(可扩展标记语言)布局文件,然后所述解析模块10采用预设的测试工具将所述布局文件解析为树形图文件,其中,所述测试工具包括Uiautomator工具、Appium工具和UiAutomatorviewer工具,本实施例中,优选所述测试工具为UiAutomatorviewer工具,UiAutomatorviewer工具是Android SDK(Software Development Kit,软件开发工具包)原生的开源工具,为测试人员提供查看终端当前页面布局、控件属性,便于编写UiAutomator测试脚本的工具。该UiAutomatorviewer工具的GUI(Graphical User Interface,图形用户界面)是使用RCP(remote file copy,远程文件拷贝)组件进行开发的,所述采用所述测试工具将所述布局文件解析为树形图文件的过程如下:首先所述UiAutomatorviewer工具通过Shell命令uiAutomator dump把终端当前的布局文件拷贝到本地,即xml布局文件,然后将所述xml布局文件构造成一棵tree,即解析为树形图文件,值得注意的是,所述树形图文件中包括各个节点,并且,每个节点代表一个控件。
由于传统的测试过程,测试工具将所述树形图文件放到Canvas SWT(画布)组件中,同时监听鼠标点击等事件,自动获取该树形图文件中的各个节点,各个节点可以用node节点表示,并且把各个node节点的各个属性获取显示出来。由于传统的测试过程,会出现无法定位某些控件的情况,仅仅通过资源Id、包名、类名及文本信息可能无法唯一的定位控件,如图3所示,页面ListView中各item(条目)的Node Detail(节点的细节)信息一致,此时,就需要编写标记语言来定位控件,不仅智能性低,并且对于测试人员而言,难度较大,进一步地提高了测试要求。应当理解的是,本发明中的所述标记语言优选为Xpath语句,
因此,本实施例中,首先先下载UiAutomator开源源码,有三个包,com.android.uiautomator,用于存放uiautomatorviewer工具的GUI界面代码,其中主入口UiAutomatorViewer.java文件里面有main函数入口,工具的窗口就在此创建。com.android.uiautomator.actions,用于存放所有action操作,如:Device screenshot、打开、保存等。com.android.uiautomator.tree,用于存放tree封装,拷贝出来的xml解析成一棵完整的tree,这个包是核心包。
获取模块20,用于获取所述树形图文件中各个节点的键值属性字段;
在本实施例中,所述获取模块20再获取所述树形图文件中各个节点的键值属性字段,其中,每个节点对应一个控件,而所述键值属性字段表示对所述节点的文本描述,如className类名、text文件、content-desc或index索引等等。
添加模块30,用于在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段;
生成模块40,用于根据所述标记语言属性字段生成各个控件的标记语言。
在本实施例中,在所述获取模块20获取到所述树形图文件中各个节点的键值属性字段之后,提取各个节点预设的标记语言属性字段,本发明所述标记语言属性字段用Xpath属性字段表示,应当理解的是,各个节点预设的Xpath属性字段是在编写源代码时,根据各个控件编写生成的属性字段,在编写完成后,将各个节点的的Xpath属性字段预存在内存或缓存中。后续在所述获取模块20获取到各个节点的键值属性字段之后,所述添加模块30即可将各个节点预存的Xpath属性字段添加到各个节点的键值属性字段中,以供所述生成模块40生成各个控件的Xpath语句。
在本实施例中,在得到各个控件对应的Xpath语句之后,即可根据各个控件的Xpath语句对各个控件进行定位。
本发明提出的标记语言生成装置,解析模块将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件,获取模块获取所述树形图文件中各个节点的键值属性字段,添加模块在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,生成模块最终根据所述标记语言属性字段生成各个控件的标记语言,实现了在开发软件时,可在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以生成各个控件的标记语言,最终实现对控件的定位,而不是在控件没有定位标志时,需要人工编写标记语言来定位控件,本发明自动生成标记语言,提高了标记语言生成的智能性,也提高了软件开发的效率。
进一步地,为了提高标记语言生成的效率,提出本发明标记语言的生成装置第二实施例。
标记语言生成装置的第二实施例与标记语言生成装置的第一实施例的区别在于,参照图4,所述添加模块30包括:
封装子模块31,用于对所述树形图文件中各个节点的键值属性字段进行封装;
在本实施例中,所述封装子模块31先对所述树形图文件中各个节点的键值属性字段进行封装,即通过所述UiAutomatorviewer工具对各个节点进行键值属性字段的封装,具体在com.android.uiautomator.tree包下,先对各个节点即Node节点下定义一个LinkedHashMap,该LinkedHashMap用于存储各个节点所有key-value属性,key-value属性也就是上文所述的键值属性字段如:className、text、content-desc或index等等,对各个节点的键值属性字段进行封装,也就是将各个节点的键值属性字段归类到各个LinkedHashMap中,有助于后续应用时,方便获取各个节点下的各个键值属性字段,而不用一个个去查找,从而提高了标记语言生成的效率。
添加子模块32,用于在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段。
在本实施例中,所述添加子模块32在各个节点封装后的键值属性字段中添加各个节点预设的Xpath属性字段,其中,Xpath属性字段添加到封装后的键值属性字段中的位置不做限制,只要在封装后的键值属性字段中的再添加Xpath属性字段即可,最终生成各个控件的Xpath语句,本实施例相当于在各个节点中添加一个Xpath属性字段,由于每个节点的Xpath属性字段都不相同,那么最终生成的各个控件的Xpath语句也是各不相同的。
在本实施例中,先对所述树形图文件中各个节点的键值属性字段进行封装,然后在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段,通过对节点的键值属性字段进行封装,便于各个节点的数据的存储,而不会各个键值属性字段分散,后续在使用数据时,可以快速找到数据,提高了标记语言生成的效率。
进一步地,为了提高标记语言生成的效率,提出本发明标记语言的生成装置第三实施例。
标记语言生成装置的第三实施例与标记语言生成装置的第二实施例的区别在于,在各个节点的键值属性字段包括多个键值属性字段时,参照图5,所述封装子模块31包括:
确定单元311,用于确定各个节点中各个键值属性字段的优先级;
提取单元312,用于提取各个节点中预设个数的键值属性字段,其中,提取的键值属性字段的优先级高于未提取的键值属性字段的优先级;
封装单元313,用于对各个节点提取的键值属性字段进行封装。
在本实施例中,若各个节点的键值属性字段包括多个键值属性字段时,此时,所述确定单元311先确定各个节点中各个键值属性字段的优先级,本实施例中,可定义个键值属性字段的优先级为text>content-desc>index>className,各个键值属性字段的优先级的定义方式不做限制,具体根据实时情况进行设置,在确定各个节点中各个键值属性字段的优先级之后,所述提取单元312提取各个节点中预设个数的键值属性字段,所述预设个数的数量也不做限制,如本实施例中,优选在四个键值属性字段中提取两个键值属性字段,并且,由于text和content-desc的优先级高于index和className,因此,提取出text和content-desc之后,所述封装单元313对text和content-desc进行封装。
本实施例中,在各个节点的键值属性字段包括多个键值属性字段时,此时,由于在生成各个控件的标记语言即Xpath语句,只要有各个节点的键值属性字段以区分该节点即可,因此,无须将各个节点所有键值属性字段都进行封装,此时只要提取出各个节点中优先级较高的预设个数的键值属性字段即可,仅提取预设个数的键值属性字段进行封装,减小了封装包的容量值,从而提高了终端的运行效率。
参照图6,图6为本发明标记语言的生成装置第四实施例的模块示意图。
标记语言生成装置的第四实施例与标记语言生成装置的第一实施例的区别在于,所述标记语言的生成装置还包括:
弹出模块50,用于在检测到点击预设控件时,弹出所述控件的节点界面;
显示模块60,用于在弹出的所述节点界面显示所述控件对应的标记语言。
在本实施例中,获取各个标记语言,然后运行所述UiAutomatorviewer工具,在检测到用户点击预设控件时,所述弹出模块50即可弹出所述控件的节点界面,即Node Detail界面,并且所述显示模块60会在所述节点界面中显示所述控件的Xpath语句,具体可参照图7。
所述标记语言的生成装置还包括:定位模块,用于在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
也就是说,此时测试人员只要复制该xpath语句,编写UiAutomator脚本即可成功的定位该控件。
在本实施例中,可以在界面中显示标记语言,便于用户直接复制该标记语言,提高了标记语言生成的灵活性。
参照图8,图8为本发明标记语言的生成装置第五实施例的模块示意图。
标记语言生成装置的第五实施例与标记语言生成装置的第二实施例的区别在于,所述标记语言的生成装置还包括:
弹出模块50,用于在检测到点击预设控件时,弹出所述控件的节点界面;
显示模块60,用于在弹出的所述节点界面显示所述控件对应的标记语言。
在本实施例中,获取各个标记语言,然后运行所述UiAutomatorviewer工具,在检测到用户点击预设控件时,所述弹出模块50即可弹出所述控件的节点界面,即Node Detail界面,并且所述显示模块60会在所述节点界面中显示所述控件的Xpath语句,具体可参照图7。
所述标记语言的生成装置还包括:定位模块,用于在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
也就是说,此时测试人员只要复制该xpath语句,编写UiAutomator脚本即可成功的定位该控件。
在本实施例中,可以在界面中显示标记语言,便于用户直接复制该标记语言,提高了标记语言生成的灵活性。
参照图9,图9为本发明标记语言的生成装置第六实施例的模块示意图。
标记语言生成装置的第六实施例与标记语言生成装置的第三实施例的区别在于,所述标记语言的生成装置还包括:
弹出模块50,用于在检测到点击预设控件时,弹出所述控件的节点界面;
显示模块60,用于在弹出的所述节点界面显示所述控件对应的标记语言。
在本实施例中,获取各个标记语言,然后运行所述UiAutomatorviewer工具,在检测到用户点击预设控件时,所述弹出模块50即可弹出所述控件的节点界面,即Node Detail界面,并且所述显示模块60会在所述节点界面中显示所述控件的Xpath语句,具体可参照图7。
所述标记语言的生成装置还包括:定位模块,用于在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
也就是说,此时测试人员只要复制该xpath语句,编写UiAutomator脚本即可成功的定位该控件。
在本实施例中,可以在界面中显示标记语言,便于用户直接复制该标记语言,提高了标记语言生成的灵活性。
本发明还提供一种标记语言的生成方法。
参照图10,图10为本发明标记语言的生成方法第一实施例的流程示意图,对应于本发明标记语言的生成装置处理第一实施例的模块示意图。
本实施例提出一种标记语言的生成方法,所述标记语言的生成方法包括:
步骤S10,将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;
在本实施例中,首先先获取待处理界面的布局文件,所述待处理界面的布局文件可以为当前显示界面对应的布局文件,所述布局文件优选为xml(可扩展标记语言)布局文件,然后采用预设的测试工具将所述布局文件解析为树形图文件,其中,所述测试工具包括Uiautomator工具、Appium工具和UiAutomatorviewer工具,本实施例中,优选所述测试工具为UiAutomatorviewer工具,UiAutomatorviewer工具是Android SDK(SoftwareDevelopment Kit,软件开发工具包)原生的开源工具,为测试人员提供查看终端当前页面布局、控件属性,便于编写UiAutomator测试脚本的工具。该UiAutomatorviewer工具的GUI(Graphical User Interface,图形用户界面)是使用RCP(remote file copy,远程文件拷贝)组件进行开发的,所述采用所述测试工具将所述布局文件解析为树形图文件的过程如下:首先所述UiAutomatorviewer工具通过Shell命令uiAutomator dump把终端当前的布局文件拷贝到本地,即xml布局文件,然后将所述xml布局文件构造成一棵tree,也就是解析为树形图文件,值得注意的是,所述树形图文件中包括各个节点,并且,每个节点代表一个控件。
由于传统的测试过程,测试工具将所述树形图文件放到Canvas SWT(画布)组件中,同时监听鼠标点击等事件,自动获取该树形图文件中的各个节点,各个节点可以用node节点表示,并且把各个node节点的各个属性获取显示出来。由于传统的测试过程,会出现无法定位某些控件的情况,仅仅通过资源Id、包名、类名及文本信息可能无法唯一的定位控件,如图3所示,页面ListView中各item(条目)的Node Detail(节点的细节)信息一致,此时,就需要编写标记语言来定位控件,不仅智能性低,并且对于测试人员而言,难度较大,进一步地提高了测试要求。应当理解的是,本发明中的所述标记语言优选为Xpath语句,
因此,本实施例中,首先先下载UiAutomator开源源码,有三个包,com.android.uiautomator,用于存放uiautomatorviewer工具的GUI界面代码,其中主入口UiAutomatorViewer.java文件里面有main函数入口,工具的窗口就在此创建。com.android.uiautomator.actions,用于存放所有action操作,如:Device screenshot、打开、保存等。com.android.uiautomator.tree,用于存放tree封装,拷贝出来的xml解析成一棵完整的tree,这个包是核心包。
步骤S20,获取所述树形图文件中各个节点的键值属性字段;
在本实施例中,获取所述树形图文件中各个节点的键值属性字段,其中,每个节点对应一个控件,而所述键值属性字段表示对所述节点的文本描述,如className类名、text文件、content-desc或index索引等等。
步骤S30,在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以根据所述标记语言属性字段生成各个控件的标记语言。
在本实施例中,在获取到所述树形图文件中各个节点的键值属性字段之后,提取各个节点预设的标记语言属性字段,本发明所述标记语言属性字段用Xpath属性字段表示,应当理解的是,各个节点预设的Xpath属性字段是在编写源代码时,根据各个控件编写生成的属性字段,在编写完成后,将各个节点的的Xpath属性字段预存在内存或缓存中。后续在获取到各个节点的键值属性字段之后,即可将各个节点预存的Xpath属性字段添加到各个节点的键值属性字段中,以生成各个控件的Xpath语句。
在本实施例中,在得到各个控件对应的Xpath语句之后,即可根据各个控件的Xpath语句对各个控件进行定位。
本实施例提出的标记语言生成方法,先将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件,然后获取所述树形图文件中各个节点的键值属性字段,然后在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以生成各个节点的标记语言,最终最终根据所述标记语言属性字段生成各个控件的标记语言,实现了在开发软件时,可在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以生成各个控件的标记语言,最终实现对控件的定位,而不是在控件没有定位标志时,需要人工编写标记语言来定位控件,本发明自动生成标记语言,提高了标记语言生成的智能性,也提高了软件开发的效率。
进一步地,为了提高标记语言生成的效率,提出本发明标记语言的生成方法第二实施例。
标记语言生成方法的第二实施例与标记语言生成方法的第一实施例的区别在于,参照图11,所述步骤S30包括:
步骤S31,对所述树形图文件中各个节点的键值属性字段进行封装;
在本实施例中,先对所述树形图文件中各个节点的键值属性字段进行封装,即通过所述UiAutomatorviewer工具对各个节点进行键值属性字段的封装,具体在com.android.uiautomator.tree包下,先对各个节点即Node节点下定义一个LinkedHashMap,该LinkedHashMap用于存储各个节点所有key-value属性,key-value属性也就是上文所述的键值属性字段如:className、text、content-desc或index等等,对各个节点的键值属性字段进行封装,也就是将各个节点的键值属性字段归类到各个LinkedHashMap中,有助于后续应用时,方便获取各个节点下的各个键值属性字段,而不用一个个去查找,从而提高了标记语言生成的效率。
步骤S32,在各个节点封装后的键值属性字段中添加各个节点预设的Xpath属性字段,以生成各个节点的标记语言。
在本实施例中,在各个节点封装后的键值属性字段中添加各个节点预设的Xpath属性字段,其中,Xpath属性字段添加到封装后的键值属性字段中的位置不做限制,只要在封装后的键值属性字段中的再添加Xpath属性字段即可,最终生成各个控件的标记语言,本实施例相当于在各个节点中添加一个Xpath属性字段,由于每个节点的Xpath属性字段都不相同,那么最终生成的各个控件的Xpath语句也是各不相同的。
在本实施例中,先对所述树形图文件中各个节点的键值属性字段进行封装,然后在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段,通过对节点的键值属性字段进行封装,便于各个节点的数据的存储,而不会各个键值属性字段分散,后续在使用数据时,可以快速找到数据,提高了标记语言生成的效率。
进一步地,为了提高标记语言生成的效率,提出本发明标记语言的生成方法第三实施例。
标记语言生成方法的第三实施例与标记语言生成方法的第二实施例的区别在于,在各个节点的键值属性字段包括多个键值属性字段时,参照图12,所述步骤S31包括:
步骤S311,确定各个节点中各个键值属性字段的优先级;
步骤S312,提取各个节点中预设个数的键值属性字段,其中,提取的键值属性字段的优先级高于未提取的键值属性字段的优先级;
步骤S313,对各个节点提取的键值属性字段进行封装。
在本实施例中,若各个节点的键值属性字段包括多个键值属性字段时,此时,先确定各个节点中各个键值属性字段的优先级,本实施例中,可定义个键值属性字段的优先级为text>content-desc>index>className,各个键值属性字段的优先级的定义方式不做限制,具体根据实时情况进行设置,在确定各个节点中各个键值属性字段的优先级之后,提取各个节点中预设个数的键值属性字段,所述预设个数的数量也不做限制,如本实施例中,优选在四个键值属性字段中提取两个键值属性字段,并且,由于text和content-desc的优先级高于index和className,因此,提取出text和content-desc之后,对text和content-desc进行封装。
本实施例中,在各个节点的键值属性字段包括多个键值属性字段时,此时,由于在生成各个控件的标记语言Xpath语句,只要有各个节点的键值属性字段以区分该节点即可,因此,无须将各个节点所有键值属性字段都进行封装,此时只要提取出各个节点中优先级较高的预设个数的键值属性字段即可,进一步地,仅提取预设个数的键值属性字段进行封装,减小了封装包的容量值,从而提高了终端的运行效率。
参照图13,图13为本发明标记语言的生成方法第四实施例的流程示意图。
标记语言生成方法的第四实施例与标记语言生成方法的第一实施例的区别在于,所述步骤S30之后,所述标记语言的生成方法还包括:
步骤S40,在检测到点击预设控件时,弹出所述控件的节点界面;
步骤S50,在弹出的所述节点界面显示所述控件对应的标记语言。
在本实施例中,获取各个标记语言,然后运行所述UiAutomatorviewer工具,在检测到用户点击预设控件时,即可弹出所述控件的节点界面,即NodeDetail界面,并且会在所述节点界面中显示所述控件的Xpath语句,具体可参照图7。
所述步骤S50之后,所述标记语言的生成方法还包括:
在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
也就是说,此时测试人员只要复制该标记语言,编写UiAutomator脚本即可成功的定位该控件。
在本实施例中,可以在界面中显示标记语言,便于用户直接复制该标记语言,提高了标记语言生成的灵活性。
参照图14,图14为本发明标记语言的生成方法第五实施例的流程示意图。
标记语言生成方法的第五实施例与标记语言生成方法的第二实施例的区别在于,所述步骤S30之后,所述标记语言的生成方法还包括:
步骤S40,在检测到点击预设控件时,弹出所述控件的节点界面;
步骤S50,在弹出的所述节点界面显示所述控件对应的标记语言。
在本实施例中,获取各个标记语言,然后运行所述UiAutomatorviewer工具,在检测到用户点击预设控件时,即可弹出所述控件的节点界面,即NodeDetail界面,并且会在所述节点界面中显示所述控件的Xpath语句,具体可参照图7。
所述步骤S50之后,所述标记语言的生成方法还包括:
在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
也就是说,此时测试人员只要复制该标记语言,编写UiAutomator脚本即可成功的定位该控件。
在本实施例中,可以在界面中显示标记语言,便于用户直接复制该标记语言,提高了标记语言生成的灵活性。
参照图15,图15为本发明标记语言的生成方法第六实施例的流程示意图。
标记语言生成方法的第六实施例与标记语言生成方法的第三实施例的区别在于,所述步骤S30之后,所述标记语言的生成方法还包括:
步骤S40,在检测到点击预设控件时,弹出所述控件的节点界面;
步骤S50,在弹出的所述节点界面显示所述控件对应的标记语言。
在本实施例中,获取各个标记语言,然后运行所述UiAutomatorviewer工具,在检测到用户点击预设控件时,即可弹出所述控件的节点界面,即NodeDetail界面,并且会在所述节点界面中显示所述控件的Xpath语句,具体可参照图7。
所述步骤S50之后,所述标记语言的生成方法还包括:
在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
也就是说,此时测试人员只要复制该标记语言,编写UiAutomator脚本即可成功的定位该控件。
在本实施例中,可以在界面中显示标记语言,便于用户直接复制该标记语言,提高了标记语言生成的灵活性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种标记语言的生成装置,其特征在于,所述标记语言的生成装置包括:
解析模块,用于将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;
获取模块,用于获取所述树形图文件中各个节点的键值属性字段;
添加模块,用于在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段;
生成模块,用于根据所述标记语言属性字段生成各个控件的标记语言。
2.如权利要求1所述的标记语言的生成装置,其特征在于,所述添加模块包括:
封装子模块,用于对所述树形图文件中各个节点的键值属性字段进行封装;
添加子模块,用于在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段。
3.如权利要求2所述的标记语言的生成装置,其特征在于,在各个节点的键值属性字段包括多个键值属性字段时,所述封装子模块包括:
确定单元,用于确定各个节点中各个键值属性字段的优先级;
提取单元,用于提取各个节点中预设个数的键值属性字段,其中,提取的键值属性字段的优先级高于未提取的键值属性字段的优先级;
封装单元,用于对各个节点提取的键值属性字段进行封装。
4.如权利要求1-3任一项所述的标记语言的生成装置,其特征在于,所述标记语言的生成装置还包括:
弹出模块,用于在检测到点击预设控件时,弹出所述控件的节点界面;
显示模块,用于在弹出的所述节点界面显示所述控件对应的标记语言。
5.如权利要求4所述的标记语言的生成装置,其特征在于,所述标记语言的生成装置还包括:
定位模块,用于在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
6.一种标记语言的生成方法,其特征在于,所述标记语言的生成方法包括:
将待处理界面的布局文件解析为树形图文件,其中,所述树形图文件的每个节点对应一个控件;
获取所述树形图文件中各个节点的键值属性字段;
在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以根据所述标记语言属性字段生成各个控件的标记语言。
7.如权利要求6所述的标记语言的生成方法,其特征在于,所述在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段的步骤包括:
对所述树形图文件中各个节点的键值属性字段进行封装;
在各个节点封装后的键值属性字段中添加各个节点预设的标记语言属性字段。
8.如权利要求7所述的标记语言的生成方法,其特征在于,在各个节点的键值属性字段包括多个键值属性字段时,所述对所述树形图文件中各个节点的键值属性字段进行封装的步骤包括:
确定各个节点中各个键值属性字段的优先级;
提取各个节点中预设个数的键值属性字段,其中,提取的键值属性字段的优先级高于未提取的键值属性字段的优先级;
对各个节点提取的键值属性字段进行封装。
9.如权利要求6-8任一项所述的标记语言的生成方法,其特征在于,所述在各个节点的键值属性字段中添加各个节点预设的标记语言属性字段,以根据所述标记语言属性字段生成各个控件的标记语言的步骤之后,所述标记语言的生成方法还包括:
在检测到点击预设控件时,弹出所述控件的节点界面;
在弹出的所述节点界面显示所述控件对应的标记语言。
10.如权利要求9所述的标记语言的生成方法,其特征在于,所述在弹出的所述节点界面显示所述控件对应的标记语言的步骤之后,所述标记语言的生成方法还包括:
在所述待处理界面的脚本文件中插入所述标记语言,以定位所述控件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610363671.3A CN106066793B (zh) | 2016-05-27 | 2016-05-27 | 标记语言生成装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610363671.3A CN106066793B (zh) | 2016-05-27 | 2016-05-27 | 标记语言生成装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106066793A true CN106066793A (zh) | 2016-11-02 |
CN106066793B CN106066793B (zh) | 2019-07-26 |
Family
ID=57420380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610363671.3A Active CN106066793B (zh) | 2016-05-27 | 2016-05-27 | 标记语言生成装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106066793B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843904A (zh) * | 2017-02-20 | 2017-06-13 | 深圳市医诺智能科技发展有限公司 | 界面动态布局方法及其系统 |
CN110633196A (zh) * | 2018-06-21 | 2019-12-31 | 亿度慧达教育科技(北京)有限公司 | 应用程序的自动化用例执行方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571799A (zh) * | 2008-04-29 | 2009-11-04 | 环达电脑(上海)有限公司 | 应用程序接口的编辑系统及其方法 |
CN102016795A (zh) * | 2008-04-25 | 2011-04-13 | 微软公司 | 用于web服务的可扩展且应用程序自适应工具栏 |
CN103475788A (zh) * | 2013-09-24 | 2013-12-25 | 广东欧珀移动通信有限公司 | 一种移动设备快速分享文件的方法及系统 |
CN103955366A (zh) * | 2014-04-18 | 2014-07-30 | 南威软件股份有限公司 | 一种可视化网站模版的制作方法 |
-
2016
- 2016-05-27 CN CN201610363671.3A patent/CN106066793B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102016795A (zh) * | 2008-04-25 | 2011-04-13 | 微软公司 | 用于web服务的可扩展且应用程序自适应工具栏 |
CN101571799A (zh) * | 2008-04-29 | 2009-11-04 | 环达电脑(上海)有限公司 | 应用程序接口的编辑系统及其方法 |
CN103475788A (zh) * | 2013-09-24 | 2013-12-25 | 广东欧珀移动通信有限公司 | 一种移动设备快速分享文件的方法及系统 |
CN103955366A (zh) * | 2014-04-18 | 2014-07-30 | 南威软件股份有限公司 | 一种可视化网站模版的制作方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843904A (zh) * | 2017-02-20 | 2017-06-13 | 深圳市医诺智能科技发展有限公司 | 界面动态布局方法及其系统 |
CN106843904B (zh) * | 2017-02-20 | 2020-06-09 | 深圳市医诺智能科技发展有限公司 | 界面动态布局方法及其系统 |
CN110633196A (zh) * | 2018-06-21 | 2019-12-31 | 亿度慧达教育科技(北京)有限公司 | 应用程序的自动化用例执行方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106066793B (zh) | 2019-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111814885B (zh) | 一种管理图像框的方法、系统、设备及介质 | |
CN103702297B (zh) | 短信增强方法、装置及系统 | |
CN108228305A (zh) | 应用页面的显示方法、装置、存储介质及电子设备 | |
CN105677571B (zh) | 移动终端软件兼容性测试装置及方法 | |
CN106201427A (zh) | 一种应用程序启动方法及终端设备 | |
CN108614689A (zh) | 场景服务的生成方法、装置和终端设备 | |
CN111930617B (zh) | 基于数据对象化的自动化测试方法及装置 | |
CN103064782A (zh) | 一种获取控件的方法及装置 | |
CN107885823A (zh) | 音频信息的播放方法、装置、存储介质及电子设备 | |
CN106406672B (zh) | 一种日常事件聚合方法、装置以及电子设备 | |
CN105045588A (zh) | 一种切换输入法皮肤的方法和装置 | |
CN106504050A (zh) | 一种信息比对装置及方法 | |
CN107016282A (zh) | 一种信息处理方法及装置 | |
CN108363817A (zh) | 文件处理方法、装置、移动终端及计算机可读存储介质 | |
CN110083527A (zh) | 一种测试用例的生成方法及装置、电子设备 | |
CN112817790A (zh) | 模拟用户行为的方法 | |
CN109815462A (zh) | 一种文本生成方法及终端设备 | |
CN107885483B (zh) | 音频信息的校验方法、装置、存储介质及电子设备 | |
US10540415B2 (en) | Apparatus and method for managing history information in an electronic device | |
CN110022397A (zh) | 图像处理方法、装置、存储介质及电子设备 | |
CN106066793A (zh) | 标记语言生成装置及方法 | |
KR20160001359A (ko) | 데이터 관리 방법 및 그 방법을 처리하는 전자 장치 | |
CN108052506A (zh) | 自然语言处理方法、装置、存储介质及电子设备 | |
CN108038219A (zh) | 图片设置方法、装置、计算机装置及计算机可读存储介质 | |
CN115033318B (zh) | 图像的文字识别方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |