本发明涉及计算机
技术领域:
:,尤其是涉及一种web页面测试方法、装置、电子设备及计算机可读介质。
背景技术:
::“网页”是一种常见的互联网应用,对网页的测试也是各个互联网公司的重要工作。对于常见的手工测试,测试工程师操作浏览器,访问被测网站,检查被测网站的网页在浏览器中的内容是否正确。在对网页进行自动化测试时,测试工程师一般会在编写自动化脚本后,将自动化脚本交给自动化软件执行,由自动化软件操作浏览器完成测试。自动化软件主要提供2种功能:(1)、对象查找,即查找网页中的指定对象,例如按钮、表格等;(2)、对象操作,即模拟用户在网页上的操作,例如输入文本、点击链接等。然而,目前一般是网站的开发人员比较清楚页面中的对象能够用哪个识别属性来进行定位,例如开发人员知晓“按钮(对象)的Name(识别属性)固定为Submit,但在使用中间件以后,该按钮的ID(识别属性)可能变成动态生成的随机值,每次刷新页面都不同”。但是测试人员在编写脚本阶段,测试人员并不知道对象的哪一个属性信息会变化,无法准确选出针对这个按钮的固定属性Name,一旦测试人员在编写脚本时误用会发生变化的识别属性ID作为定位查找按钮时依据的识别属性(在某些自动化框架下,是程序帮助测试人员做出选择),将会导致在脚本运行时因为按钮的识别属性ID发生变化而找不到这个按钮,需要测试人员反复设置不同的识别属性才能最终找到按钮,导致脚本维护工作量大。技术实现要素:有鉴于此,本发明的目的在于提供一种web页面测试方法、装置、电子设备及计算机可读介质,以缓解现有技术中存在的由于web页面中页面对象的属性发生变化,导致的在进行web页面测试时无法找到页面对象的技术问题。第一方面,本发明实施例提供了一种web页面测试方法,包括:接收脚本发送的函数调用请求,所述函数调用请求包含:被测试web页面中目标对象的对象名及被调用操作函数的函数名;在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型,所述对象图文件根据所述被测试web页面的完整dom树生成;根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象;调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果。结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果,包括:确定所述操作函数执行的测试操作、所述目标对象的对象类型以及被测试web页面的页面URL地址;在预设配置文件中查找与所述对象类型、所述URL地址及所述测试操作相匹配的条目,所述条目中包括:对象类型、URL地址、引擎优先级、测试操作和操作引擎标识;按照引擎优先级的顺序,逐个调用条目中操作引擎标识对应的预设操作引擎对所述目标对象执行与所述函数名对应的测试操作;若在按照引擎优先级的顺序逐个调用预设操作引擎执行测试操作过程中,存在任一预设操作引擎执行测试操作成功,则返回执行结果。结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象,包括:确定被测试web页面的页面URL地址;在预设的配置文件中查找与所述对象类型及所述页面URL地址相匹配的记录,所述记录中包括对象类型、页面URL地址、查找优先级及属性信息的属性查找顺序;按照查找优先级从高到低的顺序,基于记录中属性查找顺序逐个在所述被测试web页面中查找与所述属性信息相匹配的对象;若在按照查找优先级从高到低的顺序查找对象过程中,存在基于任一属性查找顺序查找到的对象的数量为一个,则将查找到的对象确定为所述目标对象。结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象,还包括:若根据所述属性信息和所述对象类型在所述被测试web页面中未查找到所述目标对象,则根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象。结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象,包括:在所述被测试web页面中根据所述配置文件中的父节点查找规则查找与所述父节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的父节点;若所述目标对象的父节点下的子节点的数量为一个,则将所述子节点确定为目标对象。结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象,还包括:若所述目标对象的父节点下的子节点的数量大于一个,则在所述被测试web页面中根据所述配置文件中的子节点查找规则查找与所述子节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的子节点;根据所述目标对象的子节点向上查找所述目标对象的子节点对应的父节点;提取所述目标对象的父节点下的子节点与所述目标对象的子节点对应的父节点的交集;若所述交集内节点的数量为一个,则将所述交集内的节点确定为所述目标对象。结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象,还包括:若所述目标对象的父节点下的子节点的数量大于一个,则在所述被测试web页面中根据所述配置文件中的子节点查找规则查找与所述子节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的子节点;若所述被测试web页面内所述目标对象对应的父节点下的子节点的数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量相同,确定所述对象图文件中在所述目标对象对应的父节点下所述目标对象对应的子节点编号;将所述被测试web页面中所述目标对象对应的父节点下的子节点中与所述子节点编号对应的子节点确定为所述目标对象。结合第一方面,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象,还包括:若所述交集内节点的数量大于一个,或者,所述被测试web页面内所述目标对象对应的父节点下的子节点数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量不相同,则在所述被测试web页面中根据所述配置文件中的兄弟节点查找规则查找与所述兄弟节点查找规则中的对象类型及识别属性均匹配的节点,得到分别位于所述目标对象两侧的兄弟节点;若查找到的所述兄弟节点之间的节点的数量为一个,则将两个兄弟节点之间的节点确定为所述目标对象。结合第一方面,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象,还包括:若查找到的所述兄弟节点之间的节点的数量大于一个,根据预设的标志节点查找规则确定标志节点,并根据所述标志节点确定节点查找区域;在所述节点查找区域内,执行确定被测试web页面的页面URL地址的步骤,直至查找到所述目标对象。第二方面,本发明实施例还提供一种web页面测试装置,包括:HTTP服务,用于接收脚本发送的函数调用请求,所述函数调用请求包含:被测试web页面中目标对象的对象名及被调用操作函数的函数名;命令解析引擎,用于在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型;对象查找引擎,用于根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象;操作执行引擎,用于对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果。第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法的步骤。第四方面,本发明实施例还提供一种计算机可读介质,所述计算机可读介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现第一方面所述的方法。本发明实施例带来了以下有益效果:本发明实施例通过接收脚本发送的函数调用请求,所述函数调用请求包含:被测试web页面中目标对象的对象名及被调用操作函数的函数名,然后在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型,其中,所述对象图文件根据所述被测试web页面的完整dom树生成,再根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象;进而可以调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果。本发明实施例可以在接收到脚本发送的函数调用请求后,利用在被测试web页面的对象图文件中查找的属性信息和对象类型在所述被测试web页面中查找所述目标对象,由于对象图文件根据所述被测试web页面的完整dom树生成,所以,一定能够在对象图文件中找到与对象名对应的准确的属性信息(能够找到目标对象的属性信息),进而可以利用找到的属性信息在被测试web页面中查找目标对象,以及调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果;而不是利用测试人员在编写脚本时自主设置(由于测试人员无法知晓什么样的属性信息为准确的,所以根据该自主设置的属性信息可能是找不到目标对象的)的属性信息查找目标对象,能够避免在脚本运行时无法找到目标对象的问题,提高web页面测试效率。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种软件架构示意图;图2为本发明实施例提供的一种Omni-Server的内部结构示意图;图3为本发明实施例提供的一种web页面测试方法的流程示意图;图4为本发明实施例提供的另一种web页面测试方法的流程示意图;图5为本发明实施例提供的另一种web页面测试方法的流程示意图;图6为本发明实施例提供的另一种web页面测试方法的流程示意图;图7为本发明实施例提供的另一种web页面测试方法的流程示意图;图8为本发明实施例提供的另一种web页面测试方法的流程示意图;图9为本发明实施例提供的另一种web页面测试方法的流程示意图;图10为本发明实施例提供的另一种web页面测试方法的流程示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。目前,一般是网站的开发人员比较清楚页面中的对象能够用哪个识别属性来进行定位,例如“这个按钮的Name固定为Submit,但ID可能变化”。但是测试人员在编写脚本阶段,难以选出对象的具体识别属性,自动化测试工程师并不知道哪一个属性信息会变化,如果测试人员在编写脚本时选用ID作为查找属性(在某些自动化框架下,是程序帮助脚本工程师做出选择),由于测试人员错选了ID且漏选了Name,所以在脚本运行时就可能因为ID变化而找不到这个按钮,需要测试人员反复设置才能最终找到按钮,导致脚本维护工作量大,基于此,本发明实施例提供的一种web页面测试方法、装置、电子设备及计算机可读介质,可以利用在被测试web页面的对象图文件中查找的属性信息在所述被测试web页面中查找所述目标对象,而不是利用测试人员在编写脚本时自主设置的属性信息查找目标对象,能够避免由于测试人员编写脚本时选错或漏选属性信息导致的在脚本运行时无法找到目标对象的问题,提高web页面测试效率。为便于对本实施例进行理解,首先对本发明实施例所公开的一种web页面测试方法进行详细介绍,所述web页面测试方法可以应用于集成有多个web自动化引擎的服务器,例如,可以采用如图1所示的软件架构中的Omni-Server服务器,Omni-Server是一个HTTP服务器,集成多个WEB自动化引擎,提供REST接口供脚本API调用。为了执行本实施例所提供的测试方法,本实施例中的HTTP服务器中如图2所示可以包括:HTTP服务11、命令解析引擎12、对象查找引擎13和操作执行引擎14。集成有多个web自动化引擎的服务器中的HTTPServer收到脚本API发来的REST请求后(示例性的,REST请求可以指get请求或者post请求等),命令解析引擎调用REST请求,并对REST请求进行分析得到被测试web页面中目标对象的对象名以及被调用操作函数的函数名,对象查找引擎通过调用的方式获取到对象名及函数名,并在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型,根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象,然后操作执行引擎调用查找到的目标对象,由服务器中的操作执行引擎根据函数名及预先存储的操作优先级配置文件决定这个REST请求由哪个预设操作引擎处理,再调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并通过HTTPServer向脚本返回执行结果。本申请的下述实施例中以服务器为Omni-Server进行说明,但应当理解的是,本申请中集成有多个web自动化引擎的服务器并不以Omni-Server为限制。图1中还包括脚本API、对象图文件以及操作引擎,图1中,黑色部分为本发明的组件,灰色部分为外部组件。在实际应用中,脚本通过调用脚本API访问Omni-Server进行web页面测试,脚本API为常用脚本语言编写的API。对于tcl编程语言和python编程语言,脚本API是一组函数;对于Java编程语言,脚本API是一组类。本发明实施例提供的脚本API,对于所有的脚本语言,提供一套相同的API接口,包括如下表1中的多个API函数,这些API函数本身并不含业务逻辑,只是把API函数的参数封装为Rest调用(也即:http请求),发送给omni-server,由omni-server执行后返回结果到脚本,例如表1中:若API函数为LoadUiMap,这个API函数的参数为对象图文件,若API函数为SelectWindow,这个API函数的参数为浏览器窗口,有些API函数也可以没有参数,如:CloseAllBrowser。表1除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。对象图文件是在编写脚本时对整个页面的dom树(而不是某几个识别属性)进行保存后生成的,所以其中包含全部的识别属性及对象类型(Tag),操作执行引擎例如可以为:JSDriver和webDriver等。如图3所示,所述web页面测试方法可以包括以下步骤:在步骤S101中,接收脚本发送的函数调用请求,所述函数调用请求包含:被测试web页面中目标对象的对象名及被调用操作函数的函数名。在实际应用中,调用请求可以指脚本在运行时发送的REST请求,对象名可以指页面对象的标识,例如可以为“Submit”,或者“ABC”等等,函数名可以指表1中任一API函数的函数名,例如:“ClickElement”等,目标对象即为被测试web页面中待执行测试操作的页面对象,这个目标对象在对象图文件中可以为dom树的一个节点。在步骤S102中,在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型,所述对象图文件根据所述被测试web页面的完整dom树生成。被测试web页面可以指浏览器访问web网站时显示的web页面。由于在编写脚本时进行,如果编写脚本时选错或漏选了属性,在脚本运行时就无法找到对象。为此,在本发明的实施例中,所述对象图文件是根据所述被测试web页面的完整dom树生成的,完整的dom树中包含全部的识别属性及对象类型(Tag),所以可以根据对象名找到目标对象的属性信息,进而找到目标对象。示例性的,属性信息可以包括多种识别属性,识别属性可以指对象的id、name、index、class或者text等等,对象类型可以指table、div或者body等。一般来说,不同的web页面对应不同的dom树。示例性的,可以在所述对象图文件中逐个查找是否存在与所述对象名相同的对象,然后将该查找到的对象的属性信息确定为与所述对象名对应的属性信息。在步骤S103中,根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象。在实际应用中,可以将被测试web页面中与属性信息和对象类型匹配的对象确定为目标对象。在步骤S104中,调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果。在步骤S105中,若查找到的对象的数量大于一个,则根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象。通过在查找到的对象数量大于一个时,根据配置文件中的关联节点查找规则继续查找与所述目标对象的关联节点,能够提高目标对象成功查找的几率。在本发明实施例中,关联节点查找规则可以为父节点查找规则、子节点查找规则、兄弟节点查找规则以及标志节点查找规则等,关联节点可以指父节点、子节点、兄弟节点以及用于限定目标对象所在对象查找区域的标志节点等等。本发明实施例通过接收脚本发送的函数调用请求,所述函数调用请求包含:被测试web页面中目标对象的对象名及被调用操作函数的函数名,然后在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型,其中,所述对象图文件根据所述被测试web页面的完整dom树生成,再根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象;进而可以调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果。本发明实施例可以在接收到脚本发送的函数调用请求后,利用在被测试web页面的对象图文件中查找的属性信息和对象类型在所述被测试web页面中查找所述目标对象,由于对象图文件根据所述被测试web页面的完整dom树生成,所以,一定能够在对象图文件中找到与对象名对应的准确的属性信息(能够找到目标对象的属性信息),进而可以利用找到的属性信息在被测试web页面中查找目标对象,以及调用预设操作引擎对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果;而不是利用测试人员在编写脚本时自主设置(由于测试人员无法知晓什么样的属性信息为准确的,所以根据该自主设置的属性信息可能是找不到目标对象的)的属性信息查找目标对象,能够避免在脚本运行时无法找到目标对象的问题,提高web页面测试效率。在本发明的又一实施例中,如图4所示,所述步骤S103可以包括以下步骤。步骤S201,确定被测试web页面的页面URL地址。步骤S202,在预设的配置文件中查找与所述对象类型及所述页面URL地址相匹配的记录,所述记录中包括对象类型、页面URL地址、查找优先级及属性信息的属性查找顺序。配置文件中可以包括属性配置文件,属性配置文件可以如下表2所示,表2中,自动化引擎缺省自带URL=*(*表示不限制URL)的通用属性查找的顺序,脚本开发人员可以根据自己网站的特点定制查找顺序,且可以设置每个查找顺序的优先级,例如,可以将数字越大的查找优先级设置为查找优先级越高等,可以提高通用性。表2除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。当脚本需要在测试web页面中查找目标对象时,可以根据目标对象的对象类型和当前页面的URL,在表2中找到包含属性查找顺序的记录,再按优先级进行排序。例如:当前页面的地址为http://1.2.3.4/sdn/vcfc/vhost/List.do,脚本需要在页面中查找一个Button对象,通过表2可以找到三条匹配的记录,按查找优先级排序如下:记录R5:class,name,id,text记录R4:class,id,text记录R1:id,name,text步骤S203,按照查找优先级从高到低的顺序,基于记录中属性查找顺序逐个在所述被测试web页面中查找与所述属性信息相匹配的对象。在获取到上述三条记录后,对象查找引擎先按记录R5设定的属性查找顺序在被测试web页面中进行查找,所以可以在被测试web页面中按照class、name、id、text的顺序逐个对被测试web页面中的对象进行过滤,以得到与所述目标对象的class、name、id、text四个识别属性相匹配的对象。按照class、name、id、text的顺序在被测试web页面中逐级过滤对象,示例性的,被测试web页面中存在1000个对象,可以首先利用class进行过滤,可以过滤掉与class不匹配的900个,此时还剩100个;再将剩余的100个中与name不匹配的30个过滤掉;再在剩余的70个中将与id不匹配的20个过滤掉,再在剩余50个中将与text不匹配的49个过滤掉,最后剩余1个,剩余的1个即为与class、name、id、text四个识别属性相匹配的对象。步骤S204,若在按照查找优先级从高到低的顺序查找对象过程中,存在基于任一属性查找顺序查找到的对象的数量为一个,则将查找到的对象确定为所述目标对象。如果在按照查找优先级从高到低的顺序(如:先R5、再R4、最后R1)进行逐级过滤过程中,如果某一次过滤时的过滤结果为0,则舍弃该次过滤所使用的识别属性。如果某一次过滤时过滤结果为得到一个对象,则可以确定为查找成功,并返回,不再过滤后面的记录,也就是说,在第一次过滤成功后返回;如果四个属性逐级过滤完毕,但得到多于一个的对象,表明查找失败,此时再按照记录R4设定的属性查找顺序进行查找,再按记录R1设定的属性查找顺序查找,如果利用R5、R4和R1三次均查找都失败,则确定本次对象查找失败,否则,确定本次对象查找成功。本发明实施例通过根据配置文件中与所述对象类型及所述页面URL地址相匹配的记录,按照查找优先级从高到低的顺序,逐个在所述被测试web页面中基于记录中属性查找顺序查找与所述属性信息相匹配的对象,若查找到一个对象,则将该对象确定为目标对象,提高目标对象的查找效率。如果在上一实施例中直接根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象失败,具体的,在本发明的又一实施例中,如图5所示,所述步骤S105可以包括以下步骤。步骤S301,在所述被测试web页面中根据所述配置文件中的父节点查找规则查找与所述父节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的父节点。在实际应用中,目标对象与目标对象的父节点之间可能会间隔两个或者三个层级,也就是说,目标对象的父节点可能不是目标对象的直接父节点,所以找到的目标对象的父节点可能是多个。在本发明实施例中,所述父节点查找规则包括:对象类型及对象属性;父节点查找规则可以如下表3所示:表3在该步骤中,可以先在对象图文件中找出目标对象的父节点(根据所述配置文件中的父节点查找规则找出与所述父节点查找规则中的对象类型及识别属性均匹配的节点),再在浏览器的web页面中找到这个“父节点”。在对象图文件中找出目标对象的父节点时,例如:可以在对象图文件中查找对象类型为table识别属性为class的对象,可以将类型和属性均匹配的对象确定为目标对象的父节点。还可以对象图文件中查找对象类型为div、识别属性为id均匹配的对象,将类型和属性均匹配的对象确定为目标对象的父节点。当然,有可能无法找到目标对象的直接父节点,则可以寻找该目标对象父节点的上一级节点,若该父节点的上一级节点下的子节点不为一个,则会一直向上查找,直至找到该目标对象的根节点作为目标对象的父节点。步骤S302,若所述目标对象的父节点下的子节点的数量为一个,则将所述子节点确定为目标对象。若找到父节点时,如果该父节点只包含一个子节点,则可以将该子节点确定为目标对象。也就是说,如果能在被测试web页面中找到目标对象的父节点,可以取父节点与子节点之间的相对位置关系找到目标对象。本发明实施例能够按照父节点查找规则首先查找到目标对象的父节点,进而再根据父节点查找目标对象,提高目标对象查找成功的几率。当查找到的目标对象的父节点的子节点数量大于一个的时候,此时则无法确定出哪一个是目标节点,在本发明的又一实施例中,如图6所示,所述步骤S105,还包括:步骤S401,若所述目标对象的父节点下的子节点的数量大于一个,则在所述被测试web页面中根据所述配置文件中的子节点查找规则查找与所述子节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的子节点,其中,子节点查找规则包括:对象类型及识别属性;在本发明实施例中,子节点查找规则可以如下表4所示:表4在该步骤中,可以先在对象图文件中找出目标对象的子节点(根据所述配置文件中的子节点查找规则找出与所述子节点查找规则中的对象类型及识别属性均匹配的节点),再在浏览器的web页面中找到这个“子节点”。步骤S402,根据所述目标对象的子节点向上查找所述目标对象的子节点对应的父节点;在实际应用中,目标对象与目标对象的子节点之间可能会间隔两个或者三个层级,也就是说,目标对象的子节点可能不是目标对象的直接子节点,所以目标对象的子节点对应的父节点可能会是多个。步骤S403,提取所述目标对象的父节点下的子节点与所述目标对象的子节点对应的父节点的交集;提取交集是指提取所述目标对象的父节点包含的多个子节点的对象类型和确定的所述目标对象的子节点的父节点的对象类型相同的节点。步骤S404,若所述交集内节点的数量为一个,则将所述交集内的节点确定为所述目标对象。本发明实施例能够按照子节点查找规则首先查找到目标对象的子节点,进而再根据子节点查找目标对象,提高目标对象查找成功的几率。当查找到的目标对象的父节点的子节点数量大于一个的时候,此时则无法确定出哪一个是目标节点,为此,在本发明的又一实施例中,本实施例与前述包含步骤S401~S404的实施例为两个并列的根据目标对象的子节点确定目标对象的两个实施例,如图7所示,所述步骤S105还可以包括以下步骤。步骤S501,若所述目标对象的父节点下的子节点的数量大于一个,则在所述被测试web页面中根据所述配置文件中的子节点查找规则查找与所述子节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的子节点;步骤S502,若所述被测试web页面内所述目标对象对应的父节点下的子节点的数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量相同,确定所述对象图文件中在所述目标对象对应的父节点下所述目标对象对应的子节点编号;在本发明实施例中,“所述目标对象的父节点下的子节点”与步骤S302或者步骤S401中“若”后面的所述目标对象的父节点下的子节点”含义相同,“所述目标对象的子节点对应的父节点”与步骤S402中的所述目标对象的子节点对应的父节点”含义相同。在该步骤中,假设所述被测试web页面内所述目标对象对应的父节点下的子节点的数量为6个,所述对象图文件中所述目标对象对应的父节点下的子节点的数量也为6个,则所述被测试web页面内所述目标对象对应的父节点下的子节点的数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量相同。步骤S503,将所述被测试web页面中所述目标对象对应的父节点下的子节点中与所述子节点编号对应的子节点确定为所述目标对象。若在所述对象图文件中在所述目标对象对应的父节点下所述目标对象对应的子节点编号为4,则所述被测试web页面中所述目标对象对应的父节点下的子节点中的第4个子节点为所述目标对象。本发明实施例能够按照子节点查找规则首先查找到目标对象的子节点,在被测试web页面内所述目标对象对应的父节点下的子节点的数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量相同时,直接按照对象图文件中目标对象的子节点编号在被测试web页面中找到目标对象,提高目标对象查找成功的几率。当步骤S404所述交集内节点的数量大于一个或者步骤S502所述被测试web页面内所述目标对象对应的父节点下的子节点数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量不相同的时候,此时则无法确定出哪一个是目标节点,为此在本发明的又一实施例中,如图8所示,所述步骤S105,还包括:步骤S601,若所述交集内节点的数量大于一个,或者,所述被测试web页面内所述目标对象对应的父节点下的子节点数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量不相同,则在所述被测试web页面中根据所述配置文件中的兄弟节点查找规则查找与所述兄弟节点查找规则中的对象类型及识别属性均匹配的节点,得到分别位于所述目标对象两侧的兄弟节点。在本发明实施例中,兄弟节点查找规则可以如下表5所示:表5在该步骤中,可以先在对象图文件中找出目标对象的兄弟节点(根据所述配置文件中的兄弟节点查找规则找出与所述兄弟节点查找规则中的对象类型及识别属性均匹配的节点),再在浏览器的web页面中找到这个“兄弟节点”。步骤S602,若查找到的所述兄弟节点之间的节点的数量为一个,则将所述节点确定为所述目标对象。示例性的,若所述兄弟节点与所述目标对象之间的相对位置关系为:目标对象在兄弟节点1的右边,且目标对象在兄弟节点2的左边,且如果兄弟节点1和兄弟节点2之间只存在一个节点,则可以将该节点确定为目标对象。本发明实施例能够按照兄弟节点查找规则首先查找到目标对象的兄弟节点,进而再根据兄弟节点查找目标对象,提高目标对象查找成功的几率。当查找到的兄弟节点之间的节点数量大于一个的时候,此时则无法确定出哪一个是目标节点,在本发明的又一实施例中,如图9所示,所述步骤S105还包括:步骤S701,若查找到的所述兄弟节点之间的节点的数量大于一个,根据预设的标志节点查找规则确定标志节点,并根据所述标志节点确定节点查找区域;在本发明实施例中,标志节点查找规则可以如下表6所示:表6在该步骤中,可以先在对象图文件中找出标识节点(根据所述配置文件中的标识节点查找规则找出与所述标识节点查找规则中的对象类型及识别属性均匹配的节点),再在浏览器的web页面中找到这个“标识节点”。除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。步骤S702,在所述节点查找区域内,执行确定被测试web页面的页面URL地址的步骤,直至查找到所述目标对象。本发明实施例能够按照标志节点查找规则首先查找到用于标识目标对象所在节点查找区域的标志节点,进而再根据节点查找区域查找目标对象,提高目标对象查找成功的几率。在本发明的又一实施例中,如图10所示,所述步骤S104可以包括以下步骤。步骤S801,确定所述操作函数执行的测试操作、所述目标对象的对象类型以及被测试web页面的页面URL地址。步骤S802,在预设的操作优先级配置文件中查找与所述对象类型、所述URL地址及所述测试操作相匹配的条目,所述条目中包括:对象类型、URL地址、引擎优先级、测试操作和操作引擎标识;在实际应用中,操作优先级配置文件可以如下表7所示:表7例如http://1.2.3.4/sdn/vcfc/vhost/host.do页面中的一个Button,由于对象类型是Button,操作是Click,所以查找上表可以得到三条记录:U1:优先级0,WEBDriverU4:优先级1,JSDriverU5:优先级2,WEBDriver。步骤S803,按照引擎优先级的顺序,逐个调用条目中操作引擎标识对应的预设操作引擎对所述目标对象执行与所述函数名对应的测试操作。由于U5的优先级最高,因此执行ClickElement操作时,优先使用WEBDriver,如果WEBDriver操作失败,再使用JSDriver。步骤S804,若在按照引擎优先级的顺序逐个调用预设操作引擎执行测试操作过程中,存在任一预设操作引擎执行测试操作成功,则返回执行结果。本发明实施例能够在预设的操作优先级配置文件中查找到与所述对象类型、所述URL地址及所述测试操作相匹配的条目,并按照条目中引擎优先级的顺序,对目标对象执行与函数名对应的测试操作,能够提高脚本通用性。在本发明的又一实施例中,还提供一种web页面测试装置,如图2所示,本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所述装置包括:HTTP服务11,用于接收脚本发送的函数调用请求,所述函数调用请求包含:被测试web页面中目标对象的对象名及被调用操作函数的函数名;命令解析引擎12,用于在被测试web页面的对象图文件中获取与所述对象名对应的属性信息及对象类型,所述对象图文件根据所述被测试web页面的完整dom树生成;对象查找引擎13,用于根据所述属性信息和所述对象类型在所述被测试web页面中查找所述目标对象;操作执行引擎14,用于对所述目标对象执行与所述函数名对应的测试操作,并返回执行结果。在本发明的又一实施例中,所述操作执行引擎14还用于:确定所述操作函数执行的测试操作、所述目标对象的对象类型以及被测试web页面的页面URL地址;在预设的配置文件中查找与所述对象类型、所述URL地址及所述测试操作相匹配的条目,所述条目中包括:对象类型、URL地址、引擎优先级、测试操作和操作引擎标识;按照引擎优先级的顺序,逐个调用条目中操作引擎标识对应的预设操作引擎对所述目标对象执行与所述函数名对应的测试操作;若在按照引擎优先级的顺序逐个调用预设操作引擎执行测试操作过程中,存在任一预设操作引擎执行测试操作成功,则返回执行结果。在本发明的又一实施例中,所述对象查找引擎13还用于:确定被测试web页面的页面URL地址;在预设的配置文件中查找与所述对象类型及所述页面URL地址相匹配的记录,所述记录中包括对象类型、页面URL地址、查找优先级及属性信息的属性查找顺序;按照查找优先级从高到低的顺序,基于记录中属性查找顺序逐个在所述被测试web页面中查找与所述属性信息相匹配的对象;若在按照查找优先级从高到低的顺序查找对象过程中,存在基于任一属性查找顺序查找到的对象的数量为一个,则将查找到的对象确定为所述目标对象。在本发明的又一实施例中,所述对象查找引擎13还用于:若根据所述属性信息和所述对象类型在所述被测试web页面中未查找到所述目标对象,则根据在所述被测试web页面中查找到的、满足所述配置文件中的关联节点查找规则的所述目标对象的关联节点,查找所述目标对象。在本发明的又一实施例中,所述对象查找引擎13还用于:在所述被测试web页面中根据所述配置文件中的父节点查找规则查找与所述父节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的父节点;若所述目标对象的父节点下的子节点的数量为一个,则将所述子节点确定为目标对象。在本发明的又一实施例中,所述对象查找引擎13还用于:若所述目标对象的父节点下的子节点的数量大于一个,则在所述被测试web页面中根据所述配置文件中的子节点查找规则查找与所述子节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的子节点;根据所述目标对象的子节点向上查找所述目标对象的子节点对应的父节点;提取所述目标对象的父节点下的子节点与所述目标对象的子节点对应的父节点的交集;若所述交集内节点的数量为一个,则将所述交集内的节点确定为所述目标对象。在本发明的又一实施例中,所述对象查找引擎13还用于:若所述目标对象的父节点下的子节点的数量大于一个,则在所述被测试web页面中根据所述配置文件中的子节点查找规则查找与所述子节点查找规则中的对象类型及识别属性均匹配的节点,得到所述目标对象的子节点;若所述被测试web页面内所述目标对象对应的父节点下的子节点的数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量相同,确定所述对象图文件中在所述目标对象对应的父节点下所述目标对象对应的子节点编号;将所述被测试web页面中所述目标对象对应的父节点下的子节点中与所述子节点编号对应的子节点确定为所述目标对象。在本发明的又一实施例中,所述对象查找引擎13还用于:若所述交集内节点的数量大于一个,或者,所述被测试web页面内所述目标对象对应的父节点下的子节点数量与所述对象图文件中所述目标对象对应的父节点下的子节点的数量不相同,则在所述被测试web页面中根据所述配置文件中的兄弟节点查找规则查找与所述兄弟节点查找规则中的对象类型及识别属性均匹配的节点,得到分别位于所述目标对象两侧的兄弟节点;若查找到的所述兄弟节点之间的节点的数量为一个,则将两个兄弟节点之间的节点确定为所述目标对象。在本发明的又一实施例中,所述操作执行引擎14还用于:若查找到的所述兄弟节点之间的节点的数量大于一个,根据预设的标志节点查找规则确定标志节点,并根据所述标志节点确定节点查找区域;在所述节点查找区域内,执行确定被测试web页面的页面URL地址的步骤,直至查找到所述目标对象。在本发明的又一实施例中,还提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法实施例所述的方法的步骤。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。在本发明的又一实施例址,还提供一种计算机可读介质,所述计算机可读介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述方法实施例所述的方法。本发明实施例所提供的web页面测试方法的计算机程序产品,包括存储了程序代码的计算机可读介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域:
:的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3