页面元素的ID属性的处理方法及装置
【技术领域】
本申请涉及页面处理技术,尤其涉及一种页面元素的ID属性的处理方法及装置。
【背景技术】
页面,有时也可以称为万维网(World Wide Web,Web)页面,可以是基于超文本标记语言(HyperText Markup Language,HTML)编写的网页(Web Page),即HTML页面,或者还可以是基于HTML和Java语言编写的网页,即Java服务器页面(Java Server Page,JSP),或者还可以为其他编程语言编写的网页。当开发人员需要构建页面时,可以仅利用原生页面元素构建页面例如,HTML规范所定义的页面元素等,或者还可以利用原生页面元素和自定义页面元素例如,利用AngularJS框架所定义的扩展页面元素等,共同构建页面。
现有技术中,可以采用人工方式,逐一为每个页面元素添加一个唯一标识,以作为页面元素的标识(Identity,ID)属性。这样,会使得操作时间很长,而且容易出错,从而导致了页面元素的ID属性的处理的效率和可靠性的降低。
【发明内容】
本申请的多个方面提供一种页面元素的ID属性的处理方法及装置,用以提高页面元素的ID属性的处理的效率和可靠性。
本申请的一方面,提供一种页面元素的ID属性的处理方法,包括:
获取目标页面元素的名称;
根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数;
根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,其中,所述预设参数包括所述目标页面元素的名称或所述目标页面元素的其他标记信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,包括:
若所述目标页面元素的名称与所述其他页面元素中任一页面元素的名称不相同,设置所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数为预先设置的初始值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,还包括:
若所述目标页面元素的名称与所述其他页面元素中至少一个页面元素的名称相同,更新所述相同的名称在所述目标页面元素所在页面上的当前出现次数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数之前,还包括:
获取所述目标页面元素所在页面的页面结构;
根据所述目标页面元素所在页面的页面结构,获得所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,包括:
对所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数进行字符串拼装处理,以获得所述目标页面元素的ID属性的属性值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述目标页面元素包括原生页面元素或自定义页面元素。
本申请的另一方面,提供一种页面元素的ID属性的处理装置,包括:
获取单元,用于获取目标页面元素的名称;
统计单元,用于根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数;
处理单元,用于根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,其中,所述预设参数包括所述目标页面元素的名称或所述目标页面元素的其他标记信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述统计单元,具体用于
若所述目标页面元素的名称与所述其他页面元素中任一页面元素的名称不相同,设置所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数为预先设置的初始值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述统计单元,还用于
若所述目标页面元素的名称与所述其他页面元素中至少一个页面元素的名称相同,更新所述相同的名称在所述目标页面元素所在页面上的当前出现次数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述统计单元,还用于
获取所述目标页面元素所在页面的页面结构;以及
根据所述目标页面元素所在页面的页面结构,获得所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述处理单元,具体用于
对所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数进行字符串拼装处理,以获得所述目标页面元素的ID属性的属性值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述目标页面元素包括原生页面元素或自定义页面元素。
由上述技术方案可知,本申请实施例通过获取目标页面元素的名称,进而根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,使得能够根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,无需人工参与处理过程,操作简单,而且正确率高,从而提高了目标页面元素的ID属性的处理的效率和可靠性。
另外,采用本申请提供的技术方案,由于根据目标页面元素的名称和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,使得目标页面元素的ID属性完全依赖于所述目标页面元素所在页面的页面结构,因此,只要目标页面元素所在页面的页面结构不改变,目标页面元素的ID属性就不会改变,能够有效提高目标页面元素的ID属性的稳定性。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的页面元素的ID属性的处理方法的流程示意图;
图2为本申请另一实施例提供的页面元素的ID属性的处理装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
可以理解的是,本申请所涉及的页面,也可以称为Web页面,可以是基于超文本标记语言(HyperText Markup Language,HTML)编写的网页(Web Page),即HTML页面,或者还可以是基于HTML和Java语言编写的网页,即Java服务器页面(Java Server Page,JSP),或者还可以为其他语言编写的网页,本实施例对此不进行特别限定。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本申请一实施例提供的页面元素的ID属性的处理方法的流程示意图,如图1所示。
101、获取目标页面元素的名称。
可选地,在本实施例的一个可能的实现方式中,在101中,所获取的所述目标页面元素可以包括但不限于原生页面元素或自定义页面元素,本实施例对此不进行特别限定。
其中,所述的原生页面元素,是指编程语言所定义的页面元素,例如,HTML规范、Java语言规范等编程语言规范所定义的页面元素,本实施例对此不进行限定;所述的自定义页面元素,是指除了编程语言规范所定义的页面元素之外的其他页面元素,例如,利用AngularJS框架所定义的扩展页面元素,本实施例对此不进行限定。
所谓的AngularJS框架是Google开源的一款JavaScript模型视图控制器(ModelView Controller,MVC)框架,弥补了HTML语言在构建页面方面的不足,其通过使用指令(directives)结构来扩展HTML语言,使开发者可以使用HTML语言来声明动态内容,从而使得Web开发和测试工作变得更加容易。
102、根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数。
可选地,在本实施例的一个可能的实现方式中,在102之前,获取所述目标页面元素所在页面的页面结构。具体地,可以根据页面的页面源代码,获得所述页面的页面结构。
然后,则可以根据所述目标页面元素所在页面的页面结构,获得所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称。
其中,所述的页面结构,是指页面源代码的语言结构,例如,例如,HTML页面源代码的HTML语言结构或JSP源代码的HTML语言结构等。页面源代码可以包括一个或者多个页面标签例如,超文本标记语言(HyperText Markup Language,HTML)标签、JSP标签等,定义的显示区块,称为页面元素,例如,文字、图片、超链接、按钮、输入框、下拉框等。
可选地,在本实施例的一个可能的实现方式中,在102中,若所述目标页面元素的名称与所述其他页面元素中任一页面元素的名称不相同,则可以设置所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数为预先设置的初始值。
进一步地,若所述目标页面元素的名称与所述其他页面元素中至少一个页面元素的名称相同,则可以更新所述相同的名称在所述目标页面元素所在页面上的当前出现次数。
103、根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值。
可选地,在本实施例的一个可能的实现方式中,在103中,具体可以对所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数进行字符串拼装处理,以获得所述目标页面元素的ID属性的属性值。
例如,可以将预设参数与当前出现次数,直接首尾连接,以生成目标页面元素的ID属性的属性值。例如,假设预设参数为Px,当前出现次数为N,则所生成的目标页面元素的ID属性的属性值为PxN。
或者,再例如,可以将预设参数与当前出现次数,通过指定字符如“#”、“*”或“_”等直接首尾连接,以生成目标页面元素的ID属性的属性值。例如,假设预设参数为Px,当前出现次数为N,则所生成的目标页面元素的ID属性的属性值为Px_N。
或者,再例如,可以将预设参数截取指定长度之后,与当前出现次数,直接首尾连接,以生成目标页面元素的ID属性的属性值。例如,假设预设参数为Px,当前出现次数为N,则所生成的目标页面元素的ID属性的属性值为PN。
或者,再例如,可以将预设参数截取指定长度之后,与当前出现次数,通过指定字符如“#”、“*”或“_”等直接首尾连接,以生成目标页面元素的ID属性的属性值。例如,假设预设参数为Px,当前出现次数为N,则所生成的目标页面元素的ID属性的属性值为P_N。
或者,再例如,可以将预设参数进行指定变换之后,与当前出现次数,直接首尾连接,以生成目标页面元素的ID属性的属性值。例如,假设预设参数为Px,当前出现次数为N,指定变换为大写与小写转换,则所生成的目标页面元素的ID属性的属性值为pXN。
或者,再例如,可以将预设参数进行指定变换之后,与当前出现次数,通过指定字符如“#”、“*”或“_”等直接首尾连接,以生成目标页面元素的ID属性的属性值。例如,假设预设参数为Px,当前出现次数为N,指定变换为大写与小写转换,则所生成的目标页面元素的ID属性的属性值为pX_N。
需要说明的是,101~103的执行主体可以为位于本地终端的应用,或者还可以为位于本地终端的应用中的插件或软件开发工具包(Software Development Kit,SDK)等功能单元,这些功能单元具体可以由一系列编程语言代码和编程语言代码所实现的库(例如,LIB库等)组成,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的本地程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行限定。
为使得本申请实施例提供的方法更加清楚,下面将以利用AngularJS框架所定义的扩展页面元素为目标页面元素为例作为举例。由于依赖于AngularJS框架提供的$rootScope服务,因此,首先,需要在AngularJS框架中定义一个服务程序,并添加所依赖的全局服务对象即$rootScope对象。该$rootScope对象为所定义的服务程序中最顶级的作用域(scope)对象。然后,可以在最顶级的作用域(scope)对象即$rootScope对象下,定义一个统计对象例如$rootScope.hiDirectiveItems对象。将所述目标页面元素的名称或所述目标页面元素的其他标记信息等预设参数,作为$rootScope.hiDirectiveItems对象的属性添加,其自身也是一个对象例如$rootScope.hiDirectiveItems[name]对象。然后,将所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数记为index,作为$rootScope.hiDirectiveItems[name]对象的属性添加,即index属性。如果所述目标页面元素的名称与所述其他页面元素中任一页面元素的名称不相同,说明没有同名的页面元素,则可以设置index属性的属性值为预先设置的初始值如1。若所述目标页面元素的名称与所述其他页面元素中至少一个页面元素的名称相同,则可以更新index属性的属性值如当前值加1。最后,对预设参数和index属性的属性值进行字符串拼装处理,以获得所述目标页面元素的ID属性的属性值。
这样,在利用AngularJS框架对目标页面元素进行定义时,可以将所述目标页面元素所对应的预设参数和所述目标页面元素所对应的文档对象模型(Document ObjectModel,DOM)对象传入到所定义的服务程序,以调用该服务程序,以获得所述目标页面元素的ID属性的属性值,并将其添加到DOM对象上。
本实施例中,通过获取目标页面元素的名称,进而根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,使得能够根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,无需人工参与处理过程,操作简单,而且正确率高,从而提高了目标页面元素的ID属性的处理的效率和可靠性。
另外,采用本申请提供的技术方案,由于根据目标页面元素的名称和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,使得目标页面元素的ID属性完全依赖于所述目标页面元素所在页面的页面结构,因此,只要目标页面元素所在页面的页面结构不改变,目标页面元素的ID属性就不会改变,能够有效提高目标页面元素的ID属性的稳定性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本申请另一实施例提供的页面元素的ID属性的处理装置的结构示意图,如图2所示。本实施例的页面元素的ID属性的处理装置可以包括获取单元21、统计单元22和处理单元23。其中,获取单元21,用于获取目标页面元素的名称;统计单元22,用于根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数;处理单元23,用于根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值。
可选地,在本实施例的一个可能的实现方式中,获取单元21所获取的所述目标页面元素可以包括但不限于原生页面元素或自定义页面元素,本实施例对此不进行特别限定。
其中,所述的原生页面元素,是指编程语言所定义的页面元素,例如,HTML规范、Java语言规范等编程语言规范所定义的页面元素,本实施例对此不进行限定;所述的自定义页面元素,是指除了编程语言规范所定义的页面元素之外的其他页面元素,例如,利用AngularJS框架所定义的扩展页面元素,本实施例对此不进行限定。
需要说明的是,本实施例所提供的页面元素的ID属性的处理装置可以为位于本地终端的应用,或者还可以为位于本地终端的应用中的插件或软件开发工具包(SoftwareDevelopment Kit,SDK)等功能单元,这些功能单元具体可以由一系列编程语言代码和编程语言代码所实现的库(例如,LIB库等)组成,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的本地程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行限定。
可选地,在本实施例的一个可能的实现方式中,所述统计单元22,还可以进一步用于获取所述目标页面元素所在页面的页面结构;以及根据所述目标页面元素所在页面的页面结构,获得所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称。
可选地,在本实施例的一个可能的实现方式中,所述统计单元22,具体可以用于若所述目标页面元素的名称与所述其他页面元素中任一页面元素的名称不相同,设置所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数为预先设置的初始值。
可选地,在本实施例的一个可能的实现方式中,所述统计单元22,还可以进一步用于若所述目标页面元素的名称与所述其他页面元素中至少一个页面元素的名称相同,更新所述相同的名称在所述目标页面元素所在页面上的当前出现次数。
可选地,在本实施例的一个可能的实现方式中,所述处理单元23,具体可以用于对所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数进行字符串拼装处理,以获得所述目标页面元素的ID属性的属性值。
需要说明的是,图2对应的实施例中方法,可以由本实施例提供的页面元素的ID属性的处理装置实现。详细描述可以参见图2对应的实施例中的相关内容,此处不再赘述。
本实施例中,通过获取单元获取目标页面元素的名称,进而由统计单元根据所述目标页面元素的名称和所述目标页面元素所在页面中出现在所述目标页面元素之前的其他页面元素的名称,获得所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,使得处理单元能够根据所述目标页面元素所对应的预设参数和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,无需人工参与处理过程,操作简单,而且正确率高,从而提高了目标页面元素的ID属性的处理的效率和可靠性。
另外,采用本申请提供的技术方案,由于根据目标页面元素的名称和所述目标页面元素的名称在所述目标页面元素所在页面上的当前出现次数,获得所述目标页面元素的ID属性的属性值,使得目标页面元素的ID属性完全依赖于所述目标页面元素所在页面的页面结构,因此,只要目标页面元素所在页面的页面结构不改变,目标页面元素的ID属性就不会改变,能够有效提高目标页面元素的ID属性的稳定性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。