CN106484609B - 页面测试方法和装置 - Google Patents
页面测试方法和装置 Download PDFInfo
- Publication number
- CN106484609B CN106484609B CN201510555588.1A CN201510555588A CN106484609B CN 106484609 B CN106484609 B CN 106484609B CN 201510555588 A CN201510555588 A CN 201510555588A CN 106484609 B CN106484609 B CN 106484609B
- Authority
- CN
- China
- Prior art keywords
- page
- test
- elements
- function
- page elements
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种页面测试方法和装置,所述方法包括:从测试脚本中读取测试指令;根据所述测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例;调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素;对查找到的页面元素执行所述页面操作相关函数定义的操作,获得测试结果。本发明提供的页面测试方法和装置,在创建页面对象实例时不会执行查找页面元素的操作,在需要用到页面元素时才会执行查找页面元素的操作,避免了在任何情况下都查找页面元素的弊端,提高了测试效率。
Description
技术领域
本发明涉及软件测试技术领域,特别是涉及一种页面测试方法和装置。
背景技术
随着自动化测试技术的普及,对软件的用户界面(UI,User Interface)进行测试逐渐由手工测试转为UI自动化测试。UI自动化测试,即由计算机模拟用户针对界面的操作,从而进行自动化测试,主要包含网页(web)UI自动化测试和本地应用程序UI自动化测试。
目前UI测试领域应用的比较广泛的是Page-Object(页面-对象)模式,即将每一个测试页面设置为一个代码文件,其中该代码文件包含页面中被测试覆盖的所有元素(例如输入框,标题等),并对需要测试的行为进行封装,这样在测试脚本中就可以通过调用页面代码文件来获取页面元素,管理起来很方便;如果页面元素的身份信息或者其他属性发生了变化,只需要修改页面代码文件的内容即可。
在对本地应用程序进行UI自动化测试时,要由计算机模拟用户针对UI中的页面进行操作,因此,在操作之前需要进行页面查找,即在UI中查找要进行操作的页面元素。
目前的UI自动化测试过程中,如果要对UI中的页面对象测试,那么在调用页面对象实例的任何指令前都要先查找页面,这种页面测试过程显得过于复杂,势必会降低页面测试的效率。
发明内容
基于此,有必要针对传统的UI自动化测试方法测试效率低的问题,提供一种页面测试方法和装置。
一种页面测试方法,所述方法包括:
从测试脚本中读取测试指令;
根据所述测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例;
调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素;
对查找到的页面元素执行所述页面操作相关函数定义的操作,获得测试结果。
上述页面测试方法,在Page-Object模式下,根据测试脚本中读取的测试指令,调用待测试页面的按照页面组织的页面代码文件来创建页面对象实例进行测试。而且采用不执行页面元素查找操作的构造函数来创建页面对象实例,使得在创建页面对象实例时并不查找待测试页面中的页面元素。根据测试脚本中的测试指令,若测试指令涉及到页面操作时,则会调用页面操作相关函数,在该页面操作相关函数中调用页面元素查找函数查找相应的页面元素,从而对查找到的页面元素执行预先定义的操作,获得测试结果。这样在创建页面对象实例时不会执行查找页面元素的操作,在需要用到页面元素时才会执行查找页面元素的操作,避免了在任何情况下都查找页面元素的弊端,提高了测试效率。
在其中一个实施例中,所述方法还包括:
调用所述测试指令指定的用于测试所述页面对象实例的页面操作非相关函数;
直接执行所述页面操作非相关函数定义的操作,获得测试结果。
这样在执行不涉及到页面操作的页面操作非相关函数定义的操作之前,无需调用查找函数来查找相应的页面元素,可以避免在不需要查找页面元素时查找页面元素所带来的额外时间消耗,提高测试效率。
在其中一个实施例中,所述在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素之后,还包括:
若未查找到所述页面元素,则等待预设查找时间间隔后继续查找所述页面元素,直至查找到所述页面元素或者直至查找所述页面元素的总时长大于等于预设总时长。
这样在查找页面元素的过程中,当查找不到页面元素时多次进行查找操作,可以避免因偶然因素未能查找到页面元素而导致判断错误,而在页面元素的总时长大于等于预设总时长时停止查找页面元素,可以避免反复查找页面元素带来额外的时间消耗,影响到测试效率。
在其中一个实施例中,所述方法还包括:
若未查找到所述页面元素直至查找所述页面元素的总时长大于等于预设总时长,则通过所述页面操作相关函数返回错误信息。
这样在没有查找到页面元素并且查找页面元素的总时长大于等于预设总时长,为了保证测试过程运行正常,则通过页面操作相关函数返回错误信息,报告测试过程中出现错误,以便及时调整测试过程。
在其中一个实施例中,所述调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数之前,还包括:
加载页面对象实例的设置信息和资源信息;所述资源信息包括所述页面对象实例中各个页面元素的路径描述符;
所述调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数,包括:
根据所述设置信息调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
所述在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素,包括:
在所述页面操作相关函数中调用页面元素查找函数,以根据所述页面操作相关函数对应的路径描述符查找相应的页面元素。
这样在调用测试指令指定的用于测试页面对象实例的页面操作相关函数中,根据设置信息可以准确调用测试指令的用于测试页面对象实例的页面操作相关的函数。在页面操作相关函数中调用页面元素查找函数查找相应的页面元素的过程中,根据资源信息中记载的路径描述符查找到相应的页面元素。这样通过加载页面对象实例的设置信息和资源信息,可以为后续测试做好准备,其中的路径描述符可以便于快速定位页面元素,提高测试效率。
一种页面测试装置,所述装置包括:
读取模块,用于从测试脚本中读取测试指令;
实例化模块,用于根据所述测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例;
页面操作相关函数调用模块,用于调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
页面元素查找模块,用于在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素;
第一操作模块,用于对查找到的页面元素执行所述页面操作相关函数定义的操作,获得测试结果。
上述页面测试装置,在Page-Object模式下,根据测试脚本中读取的测试指令,调用待测试页面的按照页面组织的页面代码文件来创建页面对象实例进行测试。而且采用不执行页面元素查找操作的构造函数来创建页面对象实例,使得在创建页面对象实例时并不查找待测试页面中的页面元素。根据测试脚本中的测试指令,若测试指令涉及到页面操作时,则会调用页面操作相关函数,在该页面操作相关函数中调用页面元素查找函数查找相应的页面元素,从而对查找到的页面元素执行预先定义的操作,获得测试结果。这样在创建页面对象实例时不会执行查找页面元素的操作,在需要用到页面元素时才会执行查找页面元素的操作,避免了在任何情况下都查找页面元素的弊端,提高了测试效率。
在其中一个实施例中,所述装置还包括:
页面操作非相关函数调用模块,用于调用所述测试指令指定的用于测试所述页面对象实例的页面操作非相关函数;
第二操作模块,用于直接执行所述页面操作非相关函数定义的操作,获得测试结果。
这样在执行不涉及到页面操作的页面操作非相关函数定义的操作之前,无需调用查找函数来查找相应的页面元素,可以避免在不需要查找页面元素时查找页面元素所带来的额外时间消耗,提高测试效率。
在其中一个实施例中,所述页面元素查找模块还用于若未查找到所述页面元素,则等待预设查找时间间隔后继续查找所述页面元素,直至查找到所述页面元素或者直至查找所述页面元素的总时长大于等于预设总时长。
这样在查找页面元素的过程中,当查找不到页面元素时多次进行查找操作,可以避免因偶然因素未能查找到页面元素而导致判断错误,而在页面元素的总时长大于等于预设总时长时停止查找页面元素,可以避免反复查找页面元素带来额外的时间消耗,影响到测试效率。
在其中一个实施例中,所述装置还包括:
错误处理模块,用于若未查找到所述页面元素直至查找所述页面元素的总时长大于等于预设总时长,则通过所述页面操作相关函数返回错误信息。
这样在没有查找到页面元素并且查找页面元素的总时长大于等于预设总时长,为了保证测试过程运行正常,则通过页面操作相关函数返回错误信息,报告测试过程中出现错误,以便及时调整测试过程。
在其中一个实施例中,所述装置还包括:
加载模块,用于加载页面对象实例的设置信息和资源信息;所述资源信息包括所述页面对象实例中各个页面元素的路径描述符;
所述页面操作相关函数调用模块还用于根据所述设置信息调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
所述页面元素查找模块还用于在所述页面操作相关函数中调用页面元素查找函数,以根据所述页面操作相关函数对应的路径描述符查找相应的页面元素。
这样在调用测试指令指定的用于测试页面对象实例的页面操作相关函数中,根据设置信息可以准确调用测试指令的用于测试页面对象实例的页面操作相关的函数。在页面操作相关函数中调用页面元素查找函数查找相应的页面元素的过程中,根据资源信息中记载的路径描述符查找到相应的页面元素。这样通过加载页面对象实例的设置信息和资源信息,可以为后续测试做好准备,其中的路径描述符可以便于快速定位页面元素,提高测试效率。
附图说明
图1为一个实施例中页面测试方法的流程示意图;
图2为另一个实施例中页面测试方法的流程示意图;
图3为一个实施例中页面测试装置的结构框图;
图4为另一个实施例中页面测试装置的结构框图;
图5为再一个实施例中页面测试装置的结构框图;
图6为一个实施例中页面测试装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施的限制。
如图1所示,在一个实施例中,提供了一种页面测试方法,该方法可应用在台式计算机或者服务器中,具体台式计算机或者服务器上运行有自动化测试程序,通过该自动化测试程序来实施该页面测试方法。该方法具体包括如下步骤:
步骤102,从测试脚本中读取测试指令。
具体地,将需要测试的行为封装到测试脚本中,测试脚本包括用于指示如何对待测试页面进行测试的测试指令的集合。测试脚本可以是Java脚本,测试脚本中的测试指令可以是Java语句。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
步骤104,根据测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例。
具体地,待测试页面是指需要进行测试的页面,待测试页面可以是网页、网页应用的界面或者本地应用的界面等。本实施例中,采用Page-Object设计模式,将每一个待测试页面设置为一个页面代码文件,该页面代码文件包含页面中被测试覆盖的各种页面元素。页面元素是组成待测试页面的基本元素,比如输入框、标题或者按钮等。如果页面元素发生了变化,只需要修改页面代码文件的内容即可。这里在测试脚本中可以通过调用页面代码文件来获取页面元素,管理起来很方便。
构造函数是一种特殊的函数,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,与new运算符一起使用在创建对象的语句中。一个类函数可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们。构造函数的命名与和类函数名相同,在Java中普通函数可以和构造函数同名,但是普通函数必须带有返回值。
传统的构造函数在创建页面对象时必须执行查找操作,以确定相应页面中的页面元素,这样才可以对页面元素中的页面元素进行各种操作。本实施例所采用的构造函数,专门适用于测试场景,采用该构造函数创建页面对象实例时不执行页面元素查找操作。该构造函数可以定义页面元素查找函数,但在创建页面对象时不调用该页面元素查找函数,即不执行页面查找操作。
步骤106,调用测试指令指定的用于测试页面对象实例的页面操作相关函数。
页面操作相关函数是指涉及到对待测试页面的页面元素进行操作的函数,具体比如点击函数click()、获取待检测页面的输入框中字符的函数以及向待检测页面中的输入框中输入字符的函数等。测试指令指定了进行测试操作的各种函数,这些函数中包括页面操作相关函数。
步骤108,在页面操作相关函数中调用页面元素查找函数查找相应的页面元素。
具体地,查找页面元素的过程被封装成页面元素查找函数,在执行页面操作相关函数时,先在页面操作相关函数中回调页面元素查找函数,通过该页面元素查找函数在待测试页面中查找页面操作相关函数相应的页面元素。也可以在页面操作相关函数中调用页面元素查找函数查询页面元素中所有的页面元素,从而再从查询到的所有页面元素中查找与页面操作相关函数相应的页面元素。
步骤110,对查找到的页面元素执行页面操作相关函数定义的操作,获得测试结果。
具体地,通过回调页面元素查找函数来查找页面操作相关函数相应的页面元素,当页面元素查找函数反馈了查找到页面元素后,就可以对查找到的页面元素执行页面操作相关函数预先定义的操作,获得测试结果。页面操作相关函数定义的操作,具体比如点击函数所定义的点击操作,或者获取待检测页面的输入框中字符的函数所定义的从待检测页面中的输入框中获取字符的操作,或者向待检测页面中的输入框中输入字符的函数所定义的向待检测页面中的输入框中输入字符的操作等。
对查找到的页面元素执行页面操作相关函数定义的操作后,会获取到相应的操作结果,可以直接记录该操作结果为测试结果,也可以将该操作结果与相应的操作时间对应记录为测试结果,还可以将该操作结果和相应的操作名称对应记录为测试结果,还可以将该测试结果、相应的操作时间以及相应的操作名称对应记录为测试结果。
上述页面测试方法,在Page-Object模式下,根据测试脚本中读取的测试指令,调用待测试页面的按照页面组织的页面代码文件,来创建页面对象实例进行测试。而且采用不执行页面元素查找操作的构造函数来创建页面对象实例,使得在创建页面对象实例时并不查找待测试页面中的页面元素。根据测试脚本中的测试指令,若测试指令涉及到页面操作时,则会调用页面操作相关函数,在该页面操作相关函数中调用页面元素查找函数查找相应的页面元素,从而对查找到的页面元素执行预先定义的操作,获得测试结果。这样在创建页面对象实例时不会执行查找页面元素的操作,在需要用到页面元素时才会执行查找页面元素的操作,避免了在任何情况下都查找页面元素的弊端,提高了测试效率。
在一个实施例中,该页面测试方法还包括:调用测试指令指定的用于测试页面对象实例的页面操作非相关函数;直接执行页面操作非相关函数定义的操作,获得测试结果。
具体地,测试指令指定了进行测试操作的各种函数,这些函数中包括页面操作相关函数和页面操作非相关函数。页面操作非相关函数是指不涉及到对待测试页面的页面元素进行操作的函数,包括设置或获取待测试页面的相关属性的函数,比如设置或获取待测试页面的访问地址的函数,还包括以待测试页面整体作为操作对象而不涉及到具体的页面元素的操作的函数,比如关闭待测试页面。
在执行页面操作非相关函数时,不再回调页面元素查找函数来查找待检测页面中的页面元素,而是直接执行页面操作非相关函数定义的操作,获得测试结果。页面操作非相关函数定义的操作具体比如设置或获取待测试页面的相关属性的操作,或者以待测试页面整体作为操作对象而不涉及到具体的页面元素的操作等。
在执行页面操作非相关函数定义的操作后,会获取到相应的操作结果,可以直接记录该操作结果为测试结果,也可以将该操作结果与相应的操作时间对应记录为测试结果,还可以将该操作结果和相应的操作名称对应记录为测试结果,还可以将该测试结果、相应的操作时间以及相应的操作名称对应记录为测试结果。
本实施例中,在执行不涉及到页面操作的页面操作非相关函数定义的操作之前,无需调用查找函数来查找相应的页面元素,可以避免在不需要查找页面元素时查找页面元素所带来的额外时间消耗,提高测试效率。
在一个实施例中,在步骤108之后,还包括:若未查找到页面元素,则等待预设查找时间间隔后继续查找页面元素,直至查找到页面元素或者直至查找页面元素的总时长大于等于预设总时长。
具体地,预设查找时间间隔可以是测试指令中指定的,也可以是页面元素查找函数所默认的。预设查找时间间隔可以设置为0.1秒至1秒,也可以设置为0.2秒至0.5秒。
可以在发起查找操作时开始计时,若未查找到页面元素则等待,当计时达到预设查找时间间隔时再次执行上述步骤108,发起查找操作,若仍未查找到则继续等待预设查找时间间隔后再次执行上述步骤108,直至查找到页面元素时停止查找,或者直至从开始查找页面元素起的总时长大于等于预设总时长时停止查找。其中预设总时长比如1秒至60秒,还比如5秒至20秒,一般可以取10秒。
本实施例中,在查找页面元素的过程中,当查找不到页面元素时多次进行查找操作,可以避免因偶然因素未能查找到页面元素而导致判断错误,而在页面元素的总时长大于等于预设总时长时停止查找页面元素,可以避免反复查找页面元素带来额外的时间消耗,影响到测试效率。
在一个实施例中,该页面测试方法还包括:若未查找到页面元素直至查找页面元素的总时长大于等于预设总时长,则通过页面操作相关函数返回错误信息。
具体地,若经过多次查找页面元素直至超时仍未查找到页面元素,则可通过页面操作相关函数输出错误信息。可将该错误信息记录为测试结果,或者直接中断测试过程。
本实施例中,在没有查找到页面元素并且查找页面元素的总时长大于等于预设总时长,为了保证测试过程运行正常,则通过页面操作相关函数返回错误信息,报告测试过程中出现错误,以便及时调整测试过程。
在一个实施例中,步骤106之前,还包括:加载页面对象实例的设置信息和资源信息;资源信息包括页面对象实例中各个页面元素的路径描述符。步骤106则具体包括:根据设置信息调用测试指令指定的用于测试页面对象实例的页面操作相关函数。步骤108具体包括:在页面操作相关函数中调用页面元素查找函数,以根据页面操作相关函数对应的路径描述符查找相应的页面元素。
具体地,在调用测试指令指定的用于测试页面对象实例的页面操作相关函数中,根据设置信息可以准确调用测试指令的用于测试页面对象实例的页面操作相关的函数。在页面操作相关函数中调用页面元素查找函数查找相应的页面元素的过程中,根据资源信息中记载的路径描述符查找到相应的页面元素。这样通过加载页面对象实例的设置信息和资源信息,可以为后续测试做好准备。
其中,设置信息是指进行测试所进行的必要设置的信息,包括上述的预设总时长、预设查找时间间隔及其他相关设置。资源信息是指测试时所要调用的资源的信息,包括页面对象实例中各个页面元素的路径描述符以及自动化测试程序运行所需要的程序变量等信息。其中页面对象实例的各个页面元素组织成树形结构,该路径描述符则定义了相应的页面元素在树形结构中的路径,通过该路径描述符可以唯一定位相应的页面元素。
本实施例中,通过加载页面对象实例的设置信息和资源信息,可以为后续测试做好准备,其中的路径描述符可以便于快速定位页面元素,提高测试效率。
如图2所示,在一个实施例中,一种页面测试方法,具体包括如下步骤:
步骤202,从测试脚本中读取测试指令,根据测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例。
步骤204,加载页面对象实例的设置信息和资源信息;资源信息包括页面对象实例中各个页面元素的路径描述符。
步骤206,判断测试指令指定的函数是否为涉及页面操作的页面操作相关函数。若是,则执行步骤208;若否,则执行步骤212。
步骤208,根据设置信息调用页面元素查找函数查找相应的路径描述符的页面元素。
步骤210,判断是否查找到页面元素。若是,则执行步骤212;若否,则执行步骤214。
步骤212,根据设置信息调用测试指令指定的函数,执行测试指令指定的函数所定义的操作。具体若涉及页面操作,则对查找到的页面元素执行测试指令指定的函数所定义的操作;若不涉及页面操作,则直接执行测试指令指定的函数所定义的操作。
步骤214,返回错误信息。
举例说明,定义基类函数RainbowPage,部分代码如下:
rd.click(we);在点击函数click()中回调页面元素查找函数waitPresent,页面元素查找函数waitPresent的预设总时长为10秒,查找总时长大于等于10秒会结束查找。
然后,定义登录页面类函数LoginPage,继承上述基类函数RainbowPage,部分代码如下:
然后,便可以将登录页面类函数LoginPage实例化后进行测试,部分代码如下:
LoginPage lp=new LoginPage();//采用构造函数LoginPage()来创建登录页面对象实例时不查找页面元素;
lp.close();//页面关闭函数close()中会调用上述页面元素查找函数waitPresent,先查找页面元素再关闭登录页面对象实例;
mInstrumentation.startActivity(“com.boyaa.texas.OpenShowActivity”);//启动入口Activity,此时会再次启动关闭的登录页面对象实例;
lp.waitSubElement(“登录按钮”).click();//调用点击函数click()时会调用页面元素查找函数waitPresent()查找相应的页面元素,无需重复创建登录页面对象实例。
相比之下,如果采用传统的基于Page-Object模式的测试方法时,代码如下:
LoginPage lp=new LoginPage();//创建登录页面对象实例,内部先查找页面对象,找不到则返回错误信息
lp.close();//关闭登录页面对象实例;
mInstrumentation.startActivity(“com.boyaa.texas.OpenShowActivity”);//启动入口Activity
LoginPage lp=new LoginPage();//需要重复创建登录页面对象实例,而且会再次查找页面元素,找不到则返回错误信息;
lp.waitSubElement(“登录按钮”).click();//点击登录页面对象实例的登录按钮。
可见,若使用传统的测试方法,不仅在创建页面对象实例时需要查找页面元素,而且在关闭页面对象实例后,必须重新创建登录页面的对象实例。而采用本实施例的页面测试方法,则在需要操作页面元素时才进行查找操作,提高了测试效率,而且不再需要重复创建页面对象,进一步提高了测试效率。
如图3所示,在一个实施例中,提供了一种页面测试装置300,包括:读取模块301、实例化模块302、页面操作相关函数调用模块303、页面元素查找模块304和第一操作模块305。
读取模块301,用于从测试脚本中读取测试指令。
实例化模块302,用于根据测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例。
页面操作相关函数调用模块303,用于调用测试指令指定的用于测试页面对象实例的页面操作相关函数。
页面元素查找模块304,用于在页面操作相关函数中调用页面元素查找函数查找相应的页面元素。
第一操作模块305,用于对查找到的页面元素执行页面操作相关函数定义的操作,获得测试结果。
如图4所示,在一个实施例中,页面测试装置300还包括:页面操作非相关函数调用模块306和第二操作模块307。
页面操作非相关函数调用模块306,用于调用测试指令指定的用于测试页面对象实例的页面操作非相关函数。
第二操作模块307,用于直接执行页面操作非相关函数定义的操作,获得测试结果。
在一个实施例中,页面元素查找模块304还用于若未查找到页面元素,则等待预设查找时间间隔后继续查找页面元素,直至查找到页面元素或者直至查找页面元素的总时长大于等于预设总时长。
如图5所示,在一个实施例中,页面测试装置300还包括:错误处理模块308,用于若未查找到页面元素直至查找页面元素的总时长大于等于预设总时长,则通过页面操作相关函数返回错误信息。
如图6所示,在一个实施例中,页面测试装置300还包括:加载模块309,用于加载页面对象实例的设置信息和资源信息;资源信息包括页面对象实例中各个页面元素的路径描述符。
页面操作相关函数调用模块303还用于根据设置信息调用测试指令指定的用于测试页面对象实例的页面操作相关函数。
页面元素查找模块304还用于在页面操作相关函数中调用页面元素查找函数,以根据页面操作相关函数对应的路径描述符查找相应的页面元素。
上述页面测试装置300,在Page-Object模式下,根据测试脚本中读取的测试指令,调用待测试页面的按照页面组织的页面代码文件来创建页面对象实例进行测试。而且采用不执行页面元素查找操作的构造函数来创建页面对象实例,使得在创建页面对象实例时并不查找待测试页面中的页面元素。根据测试脚本中的测试指令,若测试指令涉及到页面操作时,则会调用页面操作相关函数,在该页面操作相关函数中调用页面元素查找函数查找相应的页面元素,从而对查找到的页面元素执行预先定义的操作,获得测试结果。这样在创建页面对象实例时不会执行查找页面元素的操作,在需要用到页面元素时才会执行查找页面元素的操作,避免了在任何情况下都查找页面元素的弊端,提高了测试效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种页面测试方法,所述方法包括:
从测试脚本中读取测试指令;
根据所述测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例;其中,所述不执行页面元素查找操作包括:采用所述构造函数创建所述页面对象实例时不执行页面元素查找操作;
调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素;
对查找到的页面元素执行所述页面操作相关函数定义的操作,获得测试结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用所述测试指令指定的用于测试所述页面对象实例的页面操作非相关函数;
直接执行所述页面操作非相关函数定义的操作,获得测试结果。
3.根据权利要求1所述的方法,其特征在于,所述在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素之后,还包括:
若未查找到所述页面元素,则等待预设查找时间间隔后继续查找所述页面元素,直至查找到所述页面元素或者直至查找所述页面元素的总时长大于等于预设总时长。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若未查找到所述页面元素直至查找所述页面元素的总时长大于等于预设总时长,则通过所述页面操作相关函数返回错误信息。
5.根据权利要求1所述的方法,其特征在于,所述调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数之前,还包括:
加载页面对象实例的设置信息和资源信息;所述资源信息包括所述页面对象实例中各个页面元素的路径描述符;
所述调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数,包括:
根据所述设置信息调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
所述在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素,包括:
在所述页面操作相关函数中调用页面元素查找函数,以根据所述页面操作相关函数对应的路径描述符查找相应的页面元素。
6.一种页面测试装置,其特征在于,所述装置包括:
读取模块,用于从测试脚本中读取测试指令;
实例化模块,用于根据所述测试指令,调用待测试页面的页面代码文件,采用不执行页面元素查找操作的构造函数创建页面对象实例;其中,所述不执行页面元素查找操作包括:采用所述构造函数创建所述页面对象实例时不执行页面元素查找操作;
页面操作相关函数调用模块,用于调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
页面元素查找模块,用于在所述页面操作相关函数中调用页面元素查找函数查找相应的页面元素;
第一操作模块,用于对查找到的页面元素执行所述页面操作相关函数定义的操作,获得测试结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
页面操作非相关函数调用模块,用于调用所述测试指令指定的用于测试所述页面对象实例的页面操作非相关函数;
第二操作模块,用于直接执行所述页面操作非相关函数定义的操作,获得测试结果。
8.根据权利要求6所述的装置,其特征在于,所述页面元素查找模块还用于若未查找到所述页面元素,则等待预设查找时间间隔后继续查找所述页面元素,直至查找到所述页面元素或者直至查找所述页面元素的总时长大于等于预设总时长。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
错误处理模块,用于若未查找到所述页面元素直至查找所述页面元素的总时长大于等于预设总时长,则通过所述页面操作相关函数返回错误信息。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
加载模块,用于加载页面对象实例的设置信息和资源信息;所述资源信息包括所述页面对象实例中各个页面元素的路径描述符;
所述页面操作相关函数调用模块还用于根据所述设置信息调用所述测试指令指定的用于测试所述页面对象实例的页面操作相关函数;
所述页面元素查找模块还用于在所述页面操作相关函数中调用页面元素查找函数,以根据所述页面操作相关函数对应的路径描述符查找相应的页面元素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510555588.1A CN106484609B (zh) | 2015-09-01 | 2015-09-01 | 页面测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510555588.1A CN106484609B (zh) | 2015-09-01 | 2015-09-01 | 页面测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484609A CN106484609A (zh) | 2017-03-08 |
CN106484609B true CN106484609B (zh) | 2019-04-09 |
Family
ID=58237999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510555588.1A Active CN106484609B (zh) | 2015-09-01 | 2015-09-01 | 页面测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484609B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107153614A (zh) * | 2017-05-12 | 2017-09-12 | 郑州云海信息技术有限公司 | 一种自动化测试页面导航组织方法 |
CN107577607B (zh) * | 2017-09-07 | 2020-07-21 | 携程旅游信息技术(上海)有限公司 | 用户界面自动化测试方法、装置、电子设备、存储介质 |
CN108182143A (zh) * | 2017-11-29 | 2018-06-19 | 商派软件有限公司 | 一种页面对象自动化测试方法 |
CN109634857B (zh) * | 2018-12-05 | 2022-02-15 | 东软集团股份有限公司 | 测试页面对象的方法、装置和存储介质 |
CN112231214B (zh) * | 2020-10-16 | 2023-09-26 | 百度国际科技(深圳)有限公司 | 页面测试方法、装置、电子设备和介质 |
CN112559066A (zh) * | 2020-12-08 | 2021-03-26 | 北京航天云路有限公司 | 智能等待页面元素加载操作页面元素 |
CN114670200B (zh) * | 2022-03-30 | 2024-04-26 | 上海擎朗智能科技有限公司 | 应用于机器人的自动化测试方法、计算机存储介质及机器人 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6620204B1 (en) * | 1997-11-25 | 2003-09-16 | International Business Machines Corporation | Automated HTML test page and test data generation for javascript objects |
CN102521121A (zh) * | 2011-11-18 | 2012-06-27 | 华为技术有限公司 | 一种页面测试方法和页面测试装置 |
CN103034583A (zh) * | 2011-09-30 | 2013-04-10 | 国际商业机器公司 | 一种用于处理软件自动测试脚本的方法和系统 |
-
2015
- 2015-09-01 CN CN201510555588.1A patent/CN106484609B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6620204B1 (en) * | 1997-11-25 | 2003-09-16 | International Business Machines Corporation | Automated HTML test page and test data generation for javascript objects |
CN103034583A (zh) * | 2011-09-30 | 2013-04-10 | 国际商业机器公司 | 一种用于处理软件自动测试脚本的方法和系统 |
CN102521121A (zh) * | 2011-11-18 | 2012-06-27 | 华为技术有限公司 | 一种页面测试方法和页面测试装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106484609A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484609B (zh) | 页面测试方法和装置 | |
US10146668B1 (en) | Modeling code coverage in software life cycle | |
US9898396B2 (en) | Automated software testing and validation via graphical user interface | |
CN102096631B (zh) | 接口测试方法及装置 | |
CN110221820B (zh) | spring框架泛型依赖注入方法、装置及计算机设备、存储介质 | |
CN110377500A (zh) | 网站页面的测试方法、装置、终端设备及介质 | |
CN110333908B (zh) | 一种业务流程自动化处理方法及装置 | |
EP1805622A2 (en) | Method and system for simplifying the debugging of a program comprising user-written code and non user-written code | |
CN110221859A (zh) | 一种应用的部署上线管理方法、装置、设备和存储介质 | |
WO2015000398A1 (en) | Systems and methods for testing terminal applications | |
CN110888818A (zh) | 测试用例配置系统与方法,自动化测试系统与方法 | |
CN104794049B (zh) | 应用程序测试方法和装置 | |
CN106484425B (zh) | 一种基于策略配置的异常处理方法 | |
US20110265175A1 (en) | Graphical user interface tester | |
CN106326099B (zh) | 一种用于程序跟踪的方法、装置及电子设备 | |
CN110134612A (zh) | Ui测试数据生成方法、装置、设备及可读存储介质 | |
CN109522321A (zh) | 一种数据库查询方法、装置、服务器及存储介质 | |
CN108874649A (zh) | 自动化测试脚本的生成方法、装置及其计算机设备 | |
CN110046094A (zh) | 运行环境的切换方法和运行环境的切换装置 | |
CN109558328A (zh) | 一种代码覆盖率的测试方法、系统、装置及可读存储介质 | |
CN109299001A (zh) | 一种编程平台下的表单的自动化测试方法及电子设备 | |
CN109254765A (zh) | 定时任务管理方法、装置、计算机设备及存储介质 | |
CN107038117B (zh) | 一种基于事件处理函数间定义-引用的web自动化测试方法 | |
CN114416547A (zh) | 基于测试用例的测试方法 | |
CN107797721A (zh) | 一种界面信息显示方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |