CN111881043B - 页面测试方法、装置、存储介质和处理器 - Google Patents

页面测试方法、装置、存储介质和处理器 Download PDF

Info

Publication number
CN111881043B
CN111881043B CN202010732905.3A CN202010732905A CN111881043B CN 111881043 B CN111881043 B CN 111881043B CN 202010732905 A CN202010732905 A CN 202010732905A CN 111881043 B CN111881043 B CN 111881043B
Authority
CN
China
Prior art keywords
document object
target
unique identifier
page
configuration data
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
Application number
CN202010732905.3A
Other languages
English (en)
Other versions
CN111881043A (zh
Inventor
于功川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hillstone Networks Co Ltd
Original Assignee
Hillstone Networks Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hillstone Networks Co Ltd filed Critical Hillstone Networks Co Ltd
Priority to CN202010732905.3A priority Critical patent/CN111881043B/zh
Publication of CN111881043A publication Critical patent/CN111881043A/zh
Application granted granted Critical
Publication of CN111881043B publication Critical patent/CN111881043B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种页面测试方法、装置、存储介质和处理器。其中,该方法包括:在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面;根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;将代码注入至浏览器中进行执行,得到目标组件的唯一标识,并将目标组件的唯一标识回传到测试框架;在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。本发明解决了现有技术页面测试的效率低的技术问题。

Description

页面测试方法、装置、存储介质和处理器
技术领域
本发明涉及数据处理领域,具体而言,涉及一种页面测试方法、装置、存储介质和处理器。
背景技术
目前,在进行页面测试的过程中,可以是测试人员在加载页面之后,根据测试用例去检查页面显示是否正确;还可以是通过测试脚本自动化测试页面是否正确。
上述方法进行页面测试的前提是,根据地址(ID)或其它属性可以获取到对应文档对象(Document Object Model,简称为DOM),而通过框架生成的页面的ID是不确定的,因而需要在测试的过程中能够定位到DOM对象,以便可以实现页面的自动化测试。
在相关技术中,研发人员为动态组件定义用于测试的属性值(比如,key)或填充ID值。测试人员根据这些固定的值能够定位到对应的DOM对象,然后再对其属性进行判断。
对于外部来说,当前的DOM对象具有随机的ID,而且每次生成的时候都会发生改变。在测试的过程中,需要研发人员在开发的过程中指定当前DOM对象的ID或单独定义一个属性值用于DOM对象的查找。当获取到DOM对象之后,测试人员就可以继续编写测试用例来测试页面逻辑。
但是,上述方法需要开发人员单独对ID进行固定值填充,或专门定义出一个属性值进行赋值,以用于DOM对象的查找;如果整个表单也是动态生成的,那么固定值也是没有办法进行填充的;还需要编写大量的测试用例,从而导致页面测试的效率低。
针对上述现有技术中页面测试的效率低的技术问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种页面测试方法、装置、存储介质和处理器,以至少解决有技术页面测试的效率的技术问题。
根据本发明实施例的一个方面,提供了一种页面测试方法。该方法可以包括:在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面;根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;将代码注入至浏览器中进行执行,得到目标组件的唯一标识;在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。
可选地,根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码,包括:通过配置数据的属性名称获取自动化测试框架中存储的目标文档对象;通过配置数据的属性获取目标文档对象的唯一标识,并获取代码。
可选地,在根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,该方法还包括:在自动化测试框架的内部通过目标函数查询配置数据对应的目标文档对象的唯一标识。
可选地,在根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,该方法还包括:获取自动化测试框架中存储的与配置数据对应的多个文档对象;通过交叉验证在多个文档对象中确定出目标文档对象;获取目标文档对象的唯一标识。
可选地,通过交叉验证在多个文档对象中确定出目标文档对象,包括:通过属性名获取多个文档对象的唯一标识,其中,配置数据包括待测试数据,待测试数据中的多个字段包括属性名;从多个文档对象的唯一标识中确定出第一文档对象的唯一标识,其中,通过与第一文档对象的对应的属性名获取到的第一文档对象的唯一标识唯一;确定第一文档对象的唯一标识对应的父容器的地址;基于父容器的地址查找目标文档对象。
可选地,将代码注入至浏览器中进行执行,得到目标组件的唯一标识,包括:基于代码生成目标脚本;将目标脚本注入至浏览器中进行执行,并基于隐藏文档对象节点获取查询数据;基于查询数据获取目标组件的唯一标识。
可选地,将代码注入至浏览器中进行执行,得到目标组件的唯一标识,包括:基于代码生成目标脚本;将目标脚本注入至浏览器中进行执行,并调用注入函数查询目标文档对象的唯一标识;获取与目标文档对象的唯一标识对应的目标组件的唯一标识。
根据本发明实施例的另一方面,还提供了一种页面测试装置。该装置可以包括:获取单元,用于在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面;查询单元,用于根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;注入单元,用于将代码注入至浏览器中进行执行,得到目标组件的唯一标识;测试单元,用于在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质。该计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行本发明实施例的页面测试方法。
根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行本发明实施例的页面测试方法。
在本发明实施例中,采用在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面;根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;将代码注入至浏览器中进行执行,得到目标组件的唯一标识;在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。也就是说,本申请通过配置数据使用数据驱动的方式,利用动态回传的机制根据配置数据去获取需要填充或点击的目标文档对象的唯一标识,然后利用封装Dom回传的机制可以让自动化测试框架获取到对应的目标组件的唯一标识,以实现自动化页面的测试,避免了测试人员手写测试用例,使得开发周期和成本比较高,也避免了测试人员无法或需要通过定义键值的方法测动态生成页面,从而解决了页面测试的效率低的技术问题,达到了提高页面测试的效率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种页面测试方法的流程图;
图2是根据相关技术中的一种通过DOM树的节点的示意图;
图3是根据相关技术中的一种通过在DOM树添加节点来修改页面的展示的示意图;
图4是根据相关技术中的另一种通过在DOM树添加节点来修改页面的展示的示意图;
图5是根据相关技术中的一种通过在DOM树删除节点来修改页面的展示的示意图;
图6是根据本发明实施例的一种自动化测试页面的示意图;
图7是根据本发明实施例的一种通过动态回传的机制可以让测试脚本获取到需要填充或点击的目标DOM的ID的示意图;
图8是根据本发明实施例的一种回传ID的方法的流程图;
图9是根据本发明实施例的一种直接调用测试框架的API获取函数的返回信息的示意图;以及
图10是根据本发明实施例的一种页面测试装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种页面测试方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种页面测试方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤S102,在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面。
在本发明上述步骤S102提供的技术方案中,可以先启动自动化测试工具,该自动化测试工具可以称为动态框架,然后加载配置数据,该配置数据中描述了需要进行测试的测试页面,还可以包括需要的测试数据等。该实施例可以根据配置数据加载测试页面。
该实施例的页面测试的自动化实现是通过配置数据驱动的方式进行实现的,该数据的格式可以采用轻量级的数据交换格式(JavaScript Object Natation,简称为JSON)或者为可扩展标记语言(eXtensible Markup Language,简称为XML)。该实施例的配置数据中需要的关键信息可以包括以下信息:统一资源定位符(Uniform Resource Locator,简称为URL)(需要测试的页面)、测试数据、操作的触犯机制、数据的验证机制等。
可选地,在该实施例中,配置数据为JSON数据,可以通过如下代码进行表示:
Figure BDA0002603837800000051
可选地,配置数据为XML数据,可以通过如下代码进行表示:
Figure BDA0002603837800000052
Figure BDA0002603837800000061
在上述配置数据中,url:/userinfo.html可以用于表示测试页面的URL;action:“create”可以用于表示测试的行为,也即,当前为创建操作;Data:{}可以用于表示要测试的数据,***需要将这些数据填充到表单中,然后将数据发送后台或存储到其它介质中。
步骤S104,根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码。
在本发明上述步骤S104提供的技术方案中,在获取配置数据之后,可以根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码。
在该实施例中,可以根据配置数据去获取目标文档对象(DOM对象)的唯一标识,比如,为目标文档对象的ID。其中,实施例的自动化测试框架的ID都是动态生成等,因而需要一套方法来获取到动态的ID。
在该实施例中,测试人员是无法获取到动态生成的ID,如果查看DOM属性,可以将ID记录到自动化脚本中,在下次运行加载页面时,页面又会重新生成,此时ID 会发生改变,而自动化测试脚本也将失效。因而,该实施例可以采用动态回传的机制,可以让测试脚本获取到需要填充或点击的目标文档对象的唯一标识(目标DOM的ID),以通过封装Dom回传的机制使自动化测试框架获取到对应的目标组件的唯一标识,比如,目标组件的ID。
在该实施例中,自动化测试框架都会有自己内部查询DOM对象的方法,当获取到DOM对象之后,就可以获取到对应的ID,该实施例可以根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码,以在测试的过程中能够准确地定位到目标文档对象的唯一标识。
步骤S106,将代码注入至浏览器中进行执行,得到目标组件的唯一标识。
在本发明上述步骤S106提供的技术方案中,根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之后,可以将上述目标文档对象的唯一标识的代码注入至浏览器中进行执行,得到目标组件的唯一标识。
在该实施例中,自动化测试框架都是通过对DOM对象的操作进行单元测试,虽然自动化测试框架可以注入脚本并执行,但是不能获取到返回值,因而需要有一种数据回传机制来保证。
在该实施例中,可以将目标文档对象的唯一标识的代码,生成需要注入到浏览器执行的脚本,该脚本可以主要包括三部分:调用网页(WEB)框架内部的调用接口(API),根据名称查询到DOM对象信息的脚本;将查询的信息封装到JSON等便于数据解析的数据对象中;创建一个隐藏的DOM对象,将数据信息写入到这个隐藏的DOM对象节点中。
在该实施例中,可以将需要在进行单元测试时的代码通过自动化测试框架注入到浏览器中进行执行。在执行完成后就生成了一个隐藏的DIV,其中包含了需要的目标组件的唯一标识信息,然后再用自动化测试框架将固定ID的DOM数据读出来,就可以获取到目标组件的ID。
可选地,在该实施例中,如果自动化测试框架中可以直接执行测试页面中的函数并获取到返回值,则可以省略通过上述DIV实现回传信息,直接调用自动化测试框架的API获取函数的返回值,以查询目标文档对象的唯一标识,得到目标组件的唯一标识,并将目标组件的唯一标识回传到测试框架。
步骤S108,在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。
在本发明上述步骤S108提供的技术方案中,在将代码注入至浏览器中进行执行,得到目标组件的唯一标识,且将该目标组件的唯一标识回传到测试框架之后,可以在自动化测试框架中,基于目标组件的唯一标识对待测试页面的页面逻辑进行自动化测试。
通过本申请上述步骤S102至步骤S108,在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面;根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;将代码注入至浏览器中进行执行,得到目标组件的唯一标识;在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。也就是说,该实施例通过配置数据使用数据驱动的方式,利用动态回传的机制根据配置数据去获取需要填充或点击的目标文档对象的唯一标识,然后利用封装Dom回传的机制可以让自动化测试框架获取到对应的目标组件的唯一标识,以实现自动化页面的测试,避免了测试人员手写测试用例,使得开发周期和成本比较高,也避免了测试人员无法或需要通过定义键值的方法测动态生成页面,从而解决了页面测试的效率低以及无法进行动态页面测试的技术问题,达到了提高页面测试的效率以及进行动态页面测试的技术效果。
下面对该实施例的上述方法进行进一步介绍。
作为一种可选的实施方式,步骤S104,根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码,包括:通过配置数据的属性名称获取自动化测试框架中存储的目标文档对象;通过配置数据的属性获取目标文档对象的唯一标识。
在该实施例中,在自动化测试框架都会有自己内部查询目标文档对象的方法,当获取到上述目标文档对象之后,就可以获取到对应的地址。可选地,该实施例可以先通过配置数据的属性名称(name)获取自动化测试框架中存储的目标文档对象,再通过配置数据的属性获取目标文档对象的唯一标识,可以通过以下伪代码进行实现:
var userDom=getDomByName(‘username’)[0];
varuserDomId=userDom.el.dom.id.
作为一种可选的实施方式,在步骤S104,根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,该方法还包括:在自动化测试框架的内部通过目标函数查询配置数据对应的目标文档对象的唯一标识。
在该实施例中,在根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,还可以是在自动化测试框架的内部通过目标函数直接获取到目标文档对象的唯一标识,其中,目标函数可以是getDomByName()[0],可以通过以下伪代码进行实现:
Var userDomId=getDomByName(‘username’)[0];
varuserDomId=userDom.id.
作为一种可选的实施方式,在步骤S104,根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,该方法还包括:获取自动化测试框架中存储的与配置数据对应的多个文档对象;通过交叉验证在多个文档对象中确定出目标文档对象;获取目标文档对象的唯一标识。
在该实施例中,目标文档对象的唯一标识的获取都不是通过唯一标识进行获取的(如果有了唯一标识,就不需要单独获取目标文档对象的唯一标识)。该实施例获取自动化测试框架中存储的与配置数据对应的多个文档对象(多个DOM对象),但是当通过内部方法获取到多个DOM对象时,此时就会存在查询失效的情况。因而,该实施例通过交叉验证在多个文档对象中确定出目标文档对象,也即,需要交叉验证定位到一个目标文档对象,进而获取目标文档对象的唯一标识。
作为一种可选的实施方式,通过交叉验证在多个文档对象中确定出目标文档对象,包括:通过属性名获取多个文档对象的唯一标识,其中,配置数据包括待测试数据,待测试数据中的多个字段包括属性名;从多个文档对象的唯一标识中确定出第一文档对象的唯一标识,其中,通过与第一文档对象的对应的属性名获取到的第一文档对象的唯一标识唯一;确定第一文档对象的唯一标识对应的父容器的地址;基于父容器的地址查找目标文档对象。
在该实施例中,在通过交叉验证在多个文档对象中确定出目标文档对象时,配置数据包括待测试数据(Data),待测试数据中有多个字段,此时通过属性名获取多个文档对象的唯一标识,也即,获取所有的DOM的ID。该实施例可以从多个文档对象的唯一标识中确定出第一文档对象的唯一标识,通过与第一文档对象的对应的属性名获取到的第一文档对象的唯一标识唯一,然后确定第一文档对象的唯一标识对应的父容器的地址,也即,当有通过其中任何一个属性名获取的DOM对象的ID唯一时,就可以确认当前DOM的父容器的ID。在确定第一文档对象的唯一标识对应的父容器的地址之后,可以基于父容器的地址查找目标文档对象,可选地,该实施例以父容器为起点,可以查找当前父容器下的DOM对象,将其确定为目标文档对象。
作为一种可选的实施方式,将代码注入至浏览器中进行执行,得到目标组件的唯一标识,包括:基于代码生成目标脚本;将目标脚本注入至浏览器中进行执行,并基于隐藏文档对象节点获取查询数据;基于查询数据获取目标组件的唯一标识。
在该实施例中,自动化测试框架都是通过对DOM对象的操作进行单元测试,自动化测试框架可以注入脚本并执行,但是不能获取到返回值。此时需要有一种数据回传机制来保证。该实施例将目标文档对象的唯一标识的代码注入至浏览器中进行执行,得到目标组件的唯一标识的方法为一种回传ID的方法。该实施例通过自动化测试框架启动浏览器并加载测试页面,将代码生成需要注入到浏览器执行的目标脚本,可以是根据Data生成JS脚本以注入到浏览器中。可选地,该实施例的目标脚本的功能可以包括三部分,可以是调用WEB框架内部API,根据名称查询到DOM对象信息的脚本,可以是执行查询DOM对象的ID的脚本;还可以是将查询的信息封装到JSON等便于数据解析的数据对象中,也即,将查询数据封装成JSON数据;还可以创建一个隐藏的DOM对象,将JSON的数据信息写入到这个隐藏的DOM对象的节点中,也即,将 JSON的数据信息写入到隐藏的DOM脚本中。
可选地,该实施例将目标脚本注入至浏览器中进行执行,并基于隐藏文档对象节点(隐藏的DOM节点)获取查询数据,该查询数据可以包括目标文档对象的唯一标识等信息,然后基于查询数据获取目标组件的唯一标识。
在该实施例中,向浏览器注入目标脚本的基本逻辑可以如下:
Figure BDA0002603837800000101
Figure BDA0002603837800000111
得到的ID以下列DOM方式封装:
<div id=”>
var div_test=document.createElement('div');
div_test.id='test_id';
document.body.appendChild(div_test);
div_test.style.display=”none”;
var id_str=getComId(querystr);//通过前面的方法获取到对应的id或id列表的字符串
document.getElementById('test_id').innerText=str.
在准备工作完成后,需要在进行单元测试时将上面的代码通过测试框架注入到浏览器中进行执行。在执行完成之后,就可以生成一个隐藏的DIV,其中包含了需要的目标组件的唯一标识。然后再使用自动化测试框架将固定地址的目标文档对象的数据读出来,以得到对应的目标组件的唯一标识。
作为一种可选的实施方式,步骤S106,将代码注入至浏览器中进行执行,得到目标组件的唯一标识,包括:基于代码生成目标脚本;将目标脚本注入至浏览器中进行执行,并调用注入函数查询目标文档对象的唯一标识;获取与目标文档对象的唯一标识对应的目标组件的唯一标识。
在该实施例中,如果在自动化测试框架中可以直接执行测试页面中的函数,并获取到返回值,就可以直接省略通过DIV实现回传信息,可以直接调用测试框架的API 获取函数的返回值。可以是启动浏览器,生成查询DOM的JS脚本注入到浏览器中进行执行,并调用注入函数查询目标文档对象的唯一标识,进而获取与目标文档对象的唯一标识对应的目标组件的唯一标识。
该实施例可以适用于网页浏览器(web browser)的应用,有数据的录入操作的应用***,有页面的是通过框架实现的并自动生成DOM ID的,可以采用数据驱动的方式实现单元测试。
该实施例采用上述数据驱动动态页面的测试方法、动态页面DOMID查询回传方法,可以实现的动态页面的自动化测试,免除为了测试页面实现针对于测试需求定制属性的操作,解决了避免了测试人员手写测试用例,这使得开发周期和成本比较高,也避免了测试人员无法或需要通过定义键值的方法测动态生成页面,从而解决了页面测试的效率低以及无法进行动态页面测试的技术问题,进而达到了提高页面测试的效率以及进行动态页面测试的技术效果。
实施例2
下面结合优选的实施方式对本发明实施例的技术方案进行进一步介绍。
基于浏览器的应用越来越流行,云服务的出现让浏览器已经成为了图形展示最重要的手段。随着浏览器应用的普及化,前端框架也越来越丰富,为了提高开发者效率,框架也可以通过简单的代码生成复杂的页面,而满足这种复杂页面的需求的前提是底层代码自动化实现DOM对象的生成与管理。这个管理主要是通过ID来查询实现的,为了保证ID不重复,框架会通过一定的规则生成ID,并在***中进行管理。
浏览器中的页面是根据超文本标记语言(Hyper Text Markup Language,简称为HTML)的DOM进行渲染的。图2是根据相关技术中的一种通过DOM树的节点的示意图。如图2所示,页面上的每一个元素对应DOM树上的一个节点,程序可以直接通过修改DOM树的节点属性或添加(删除)节点来修改页面的展示。
图3是根据相关技术中的一种通过在DOM树添加节点来修改页面的展示的示意图。如图3所示,当在DOM树上增加一个节点<div id=“div_name”>名称</div>时,页面中就会显示出“名称”这个文字。
图4是根据相关技术中的另一种通过在DOM树添加节点来修改页面的展示的示意图。如图4所示,可以在DOM树上增加一个<button id=“button”>确定</button>,这时页面上就会增加一个文字为“确定”的按钮。
图5是根据相关技术中的一种通过在DOM树删除节点来修改页面的展示的示意图。如图5所示,当删除<div>名称</div>时,“名称”就会从页面中消失。
在进行页面的测试过程中,主要有两种方式:测试人员加载页面后,根据测试用例去检查页面显示是否正确;通过测试脚本自动化测试页面是否正确。
上述在进行页面测试的前提是,可以根据ID或其它属性获取到对应DOM对象,而通过框架生成的页面的ID是不确定的,所以需要解决如何在测试的过程中能够准确的定位到DOM对象,以便实现页面的自动化测试。
可选地,研发人员可以为动态组件定义用于测试的属性(比如,key)或填充ID 值。测试人员根据这些固定的值能够定位到对应的DOM对象,然后再对其属性进行判断。
正常的自动化测试框架中会自动生成一个ID或固定的属性值进行组件定位,自动化测试框架内部会自动存储组件与DOM对象之间的对应关系。而对于外部来说,当前的DOM对象就是一个随机的ID,而且每次生成的时候都会发生改变。自动生成的 DOM结构可以为:
<div id=”div_34716345”>
</div>.
在测试的过程中,需要研发人员在开发的过程中指定当前DOM对象的ID或单独定义一个属性值用于DOM对象的查找。在调整之后的DOM结构为:
<div id=”div_username”>
</div>.
<div id=”div_34716345”key=”div_usernane”>
</div>.
测试框架就可以通过ID的值为“div_username”(或key值为“div_username”) 获取到当前DOM。当可以获取到DOM对象后,测试人员可以继续编写测试用例来测试页面逻辑。
在相关技术中,需要开发人员单独对ID进行固定值填充或专门定义出一个属性进行赋值,以用于DOM对象的查找;如果整个表单也是动态生成的,那么固定值也是没有办法进行填充的;需要编写大量的测试用例。
而该实施例可以采用数据驱动的方式实现自动化页面的测试,可以解决测试人员手写测试用例,引起开发周期和成本比较高的问题,还可以解决测试人员无法或需要通过定义键值的方法测动态生成页面问题。
图6是根据本发明实施例的一种自动化测试页面的示意图。如图6所示,该方法可以包括以下步骤:
步骤S601,启动自动化测试框架。
步骤S602,加载配置数据。
在该实施例中,在配置数据中描述了需要测试的页面以及测试数据等。
步骤S603,根据配置数据加载测试页面。
步骤S604,根据配置数据去获取DOM的ID。
在该实施例中,ID都是动态生成的,所以需要一套方法来获取到动态的ID。
步骤S605,填充数据并执行下发操作。
在该实施例中,测试的自动化实现过程是通过配置数据来进行驱动的。数据的格式可以采用JSON或XML,数据中包括以下关键信息:URL(需要测试的页面)、测试数据、操作的触犯机制、数据的验证机制。
很多自动化测试框架的ID都是动态生成的。动态生成对ID测试人员是没有办法获取到的,如果需要查看DOM属性,将ID记录到自动化脚本中,下次运行加载页面时,页面会重新生成,此时ID会发生改变,这时自动化测试脚本将失效。
因而,需要一种动态回传的机制可以让测试脚本获取到需要填充或点击的目标DOM的ID,然后封装Dom回传的机制可以让测试框架获取到对应的组件的ID。
图7是根据本发明实施例的一种通过动态回传的机制可以让测试脚本获取到需要填充或点击的目标DOM的ID的示意图。如图7所示,可以根据数据对象属性查找 DOM,可以是根据getDomByName(‘username’)获取DOM1、DOM2、DOM3,可以根据getByName(‘age’)获取DOM1、DOM2,可以根据getByName(‘province’) 获取DOM_Province,进而确定对应的父容器,获取对应的DOM_AGE,DOM_Username。
在该实施例中,动态框架都会有自己内部查询DOM对象的方法,当获取到内部对象之后就可以获取到对应的ID。
该实施例的可以先通过name获取到框架中存储的对象,再通过对象内部属性获取到对应的ID,也可以直接获取到DOM对象。
以上ID的获取都不是通过唯一标识进行获取的(如果有了唯一标识,就不需要单独获取ID了)。当根据数据对象属性,通过内部方法获取到多个DOM对象时,此时就存在了查询失效的情况,此时需要交叉验证定位到一个对象。
在Data中有多个字段,此时可以通过数据对象的属性名获取所有的DOM的ID,当有其中任何一个属性获取的DOM对象唯一时,就可以确认当前DOM的父容器的 ID,然后再以父容器为起点,查找当前容器下的DOM对象。
下面对该实施例的回传ID的方法进行介绍。
自动化测试框架都是通过对DOM对象的操作进行单元测试,自动化测试框架可以注入脚本并执行,但是不能获取到返回值。此时需要有一种数据回传机制来保证。
图8是根据本发明实施例的一种回传ID的方法的流程图。如图8所示,该方法可以包括以下步骤:
步骤S801,自动化测试框架启动浏览器并加载测试页面。
步骤S802,自动化测试框架根据Data生成需要注入到浏览器执行的JS脚本。
步骤S803,浏览器调用WEB框架内部API,根据名称查询到DOM对象信息的脚本。
该实施例可以执行查询DOM对象ID的脚本。
步骤S804,浏览器将查询的信息封装到JSON等便于数据解析的数据对象中。
该实施例可以将查询数据封装成JSON数据。
步骤S805,浏览器创建一个隐藏的DOM对象,将数据信息写入到隐藏的DOM 对象的节点中。
该实施例可以将JSON数据写入隐藏DOM的脚本。
步骤S806,自动化测试框架查询隐藏的DOM节点的信息。
步骤S807,获取到浏览器的返回信息。
该实施例的返回消息可以包括查询数据,该查询数据可以包括DOM的ID信息等。
准备工作完成后,需要在进行单元测试时将上面的代码通过测试框架注入到浏览器中执行。执行完成后就生成了一个隐藏的DIV,其中包含了需要的组件的ID信息。然后再用测试框架将此固定ID的DOM数据读出来就可以获取到组件的ID了。
在该实施例中,如果测试框架中可以直接执行页面中的函数并获取到返回值,可以省略通过DIV实现回传信息,直接调用自动化测试框架的API获取函数的返回信息。
图9是根据本发明实施例的一种直接调用测试框架的API获取函数的返回信息的示意图。如图9所示,该方法可以包括以下步骤:
步骤S901,自动化测试框架启动浏览器。
步骤S902,自动化测试框架可以查询DOM节点ID的函数注入到浏览器中。
该实施例可以生成查询DOM的JS脚本注入到浏览器。
步骤S903,自动化测试框架调用注入函数到需要查询的DOM节点的ID。
步骤S904,自动化测试框架获取浏览器的返回信息。
该返回信息可以包括DOM的ID信息等。
该实施例可以适用于网页浏览器的应用,有数据的录入操作的应用***,有页面的是通过框架实现的并自动生成DOM的ID信息,可以采用数据驱动的方式实现单元测试。
该实施例采用上述数据驱动动态页面的测试方法、动态页面DOMID查询回传方法,可以实现的动态页面的自动化测试,免除为了测试页面实现针对于测试需求定制属性的操作,解决了避免了测试人员手写测试用例,使得开发周期和成本比较高,也避免了测试人员无法或需要通过定义键值的方法测动态生成页面,从而解决了页面测试的效率低以及无法进行动态页面测试的技术问题,进而达到了提高页面测试以及进行动态页面测试的效率的技术效果。
实施例3
本发明实施例还提供了一种页面测试装置。需要说明的是,该实施例的页面测试装置可以用于执行本发明实施例的页面测试方法。
图10是根据本发明实施例的一种页面测试装置的示意图。如图10所示,该页面测试装置10可以包括:获取单元11、查询单元12、注入单元13和测试单元14。
获取单元11,用于在启动自动化测试框架的情况下,获取配置数据,其中,配置数据中至少包括待测试页面。
查询单元12,用于根据配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码。
注入单元13,用于将代码注入至浏览器中进行执行,得到目标组件的唯一标识。
测试单元14,用于在自动化测试框架中,基于目标组件的唯一标识对待测试页面进行测试。
在该实施例的页面测试装置中,通过配置数据使用数据驱动的方式,利用动态回传的机制根据配置数据去获取需要填充或点击的目标文档对象的唯一标识,然后利用封装Dom回传的机制可以让自动化测试框架获取到对应的目标组件的唯一标识,以实现自动化页面的测试,避免了测试人员手写测试用例,使得开发周期和成本比较高,也避免了测试人员无法或需要通过定义键值的方法测动态生成页面,从而解决了页面测试的效率低以及无法进行动态页面测试的技术问题,达到了提高页面测试的效率以及进行动态页面测试的技术效果。
实施例4
根据本发明实施例,还提供了一种计算机可读存储介质。该计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行本发明实施例的计算机可读存储介质。
实施例5
根据本发明实施例,还提供了一种处理器,该处理器用于运行程序,其中,所述程序运行时执行实施例1中所述的页面测试方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种页面测试方法,其特征在于,包括:
在启动自动化测试框架的情况下,获取配置数据,其中,所述配置数据中至少包括待测试页面;
根据所述配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;
基于所述代码生成目标脚本,其中,所述目标脚本实现的操作包括三个步骤:调用所述自动化测试框架内部的调用接口,根据名称查询到所述目标文档对象的信息;将查询到的所述目标文档对象的信息封装到用于数据解析的数据对象中;创建一个隐藏文档对象,将封装到所述数据对象后的所述目标文档对象的信息写入所述隐藏文档对象中;
将所述目标脚本注入至浏览器中进行执行,得到目标组件的唯一标识;
在所述自动化测试框架中,基于所述目标组件的唯一标识对所述待测试页面进行测试。
2.根据权利要求1所述的方法,其特征在于,根据所述配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码,包括:
通过所述配置数据的属性名称获取所述自动化测试框架中存储的所述目标文档对象;
通过所述配置数据的属性获取所述目标文档对象的唯一标识,并获取所述代码。
3.根据权利要求1所述的方法,其特征在于,在根据所述配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,所述方法还包括:
在所述自动化测试框架的内部通过目标函数查询所述配置数据对应的目标文档对象的唯一标识。
4.根据权利要求1所述的方法,其特征在于,在根据所述配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码之前,所述方法还包括:
获取所述自动化测试框架中存储的与所述配置数据对应的多个文档对象;
通过交叉验证在所述多个文档对象中确定出所述目标文档对象;
获取所述目标文档对象的唯一标识。
5.根据权利要求4所述的方法,其特征在于,通过交叉验证在所述多个文档对象中确定出所述目标文档对象,包括:
通过属性名获取所述多个文档对象的唯一标识,其中,所述配置数据包括待测试数据,所述待测试数据中的多个字段包括所述属性名;
从所述多个文档对象的唯一标识中确定出第一文档对象的唯一标识,其中,通过与所述第一文档对象的对应的属性名获取到的所述第一文档对象的唯一标识唯一;
确定所述第一文档对象的唯一标识对应的父容器的地址;
基于所述父容器的地址查找所述目标文档对象。
6.根据权利要求1所述的方法,其特征在于,将所述目标脚本注入至浏览器中进行执行,得到目标组件的唯一标识,包括:
将所述目标脚本注入至所述浏览器中进行执行,并基于隐藏文档对象节点获取查询数据;
基于所述查询数据获取所述目标组件的唯一标识。
7.根据权利要求1所述的方法,其特征在于,将脚本注入至浏览器中进行执行,得到目标组件的唯一标识,包括:
将所述目标脚本注入至所述浏览器中进行执行,并调用注入函数查询所述目标文档对象的唯一标识;
获取与所述目标文档对象的唯一标识对应的所述目标组件的唯一标识。
8.一种页面测试装置,其特征在于,包括:
获取单元,用于在启动自动化测试框架的情况下,获取配置数据,其中,所述配置数据中至少包括待测试页面;
查询单元,用于根据所述配置数据的属性生成用于获取对应的目标文档对象的唯一标识的代码;
生成单元,用于基于所述代码生成目标脚本,其中,所述目标脚本实现的操作包括三部分:调用所述自动化测试框架内部的调用接口,根据名称查询到所述目标文档对象的信息;将查询到的所述目标文档对象的信息封装到用于数据解析的数据对象中;创建一个隐藏文档对象,将封装到所述数据对象后的所述目标文档对象的信息写入所述隐藏文档对象中;
注入单元,用于将所述目标脚本注入至浏览器中进行执行,得到目标组件的唯一标识;
测试单元,用于在所述自动化测试框架中,基于所述目标组件的唯一标识对所述待测试页面进行测试。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的方法。
CN202010732905.3A 2020-07-27 2020-07-27 页面测试方法、装置、存储介质和处理器 Active CN111881043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010732905.3A CN111881043B (zh) 2020-07-27 2020-07-27 页面测试方法、装置、存储介质和处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010732905.3A CN111881043B (zh) 2020-07-27 2020-07-27 页面测试方法、装置、存储介质和处理器

Publications (2)

Publication Number Publication Date
CN111881043A CN111881043A (zh) 2020-11-03
CN111881043B true CN111881043B (zh) 2022-10-14

Family

ID=73201742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010732905.3A Active CN111881043B (zh) 2020-07-27 2020-07-27 页面测试方法、装置、存储介质和处理器

Country Status (1)

Country Link
CN (1) CN111881043B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835809A (zh) * 2021-03-22 2021-05-25 亿企赢网络科技有限公司 一种基于浏览器的测试数据设置方法、装置、设备及介质
CN115412458B (zh) * 2022-08-29 2023-11-03 山石网科通信技术股份有限公司 网络设备的测试方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297752A (zh) * 2018-03-23 2019-10-01 华为软件技术有限公司 控件元素的获取方法及装置、自动化测试***、存储介质
CN110928772A (zh) * 2019-11-05 2020-03-27 深圳前海微众银行股份有限公司 一种测试方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297752A (zh) * 2018-03-23 2019-10-01 华为软件技术有限公司 控件元素的获取方法及装置、自动化测试***、存储介质
CN110928772A (zh) * 2019-11-05 2020-03-27 深圳前海微众银行股份有限公司 一种测试方法及装置

Also Published As

Publication number Publication date
CN111881043A (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
US10162738B2 (en) System, method, and computer readable medium for universal software testing
CN108228166B (zh) 一种基于模板的后端代码生成方法及***
US9483260B1 (en) Documentation generation for web APIs based on byte code analysis
US20120191840A1 (en) Managing Application State Information By Means Of A Uniform Resource Identifier (URI)
US8065667B2 (en) Injecting content into third party documents for document processing
CN103597469B (zh) 集成开发环境中的实况浏览器工具
US20170109271A1 (en) User interface testing abstraction
CN107766344B (zh) 一种模板渲染的方法、装置及浏览器
US20140075242A1 (en) Testing rest api applications
US9262311B1 (en) Network page test system and methods
US11580001B2 (en) Dynamic generation of instrumentation locators from a document object model
Esposito Programming Microsoft ASP. NET MVC
CN111881043B (zh) 页面测试方法、装置、存储介质和处理器
US9311222B1 (en) User interface testing abstraction
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN113836014A (zh) 一种接口测试方法、装置、电子设备和存储介质
CN117519877A (zh) 快应用卡片的渲染方法、装置、存储介质及电子设备
CN115470127B (zh) 页面兼容性处理方法、装置、计算机设备和存储介质
CN117354114B (zh) 一种基于云原生架构的数据服务发布方法和***
CN116340156A (zh) 应用程序的Web页面测试方法、装置、设备和介质
CN117688006A (zh) 基于智能存储的数据入库配置方法、设备及可读存储介质
CN117850780A (zh) 前端查询页面的生成方法、查询方法及电子设备、存储介质
CN114528013A (zh) 文本生成方法、装置、电子设备、存储介质及产品
CN116662143A (zh) 测试方法、装置、设备、存储介质和计算机程序产品
CN113760739A (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