CN105094940A - 针对HTMLElement的CSS选择器最短路径反查算法 - Google Patents
针对HTMLElement的CSS选择器最短路径反查算法 Download PDFInfo
- Publication number
- CN105094940A CN105094940A CN201510438532.8A CN201510438532A CN105094940A CN 105094940 A CN105094940 A CN 105094940A CN 201510438532 A CN201510438532 A CN 201510438532A CN 105094940 A CN105094940 A CN 105094940A
- Authority
- CN
- China
- Prior art keywords
- path
- node
- present node
- algorithm
- present
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了针对HTMLElement的CSS选择器最短路径反查算法,设定节点D为当前节点,算法包括S1.根据当前节点的属性值id或者class,若该节点的路径唯一指向当前节点,则结束算法,若不唯一指向当前节点,则设定节点D的路径为路径S,进入步骤S2;S2.循环将当前节点的父节点路径叠加在路径S上,若该D节点路径唯一指向节点D,则结束算法,若不唯一指向节点D;S3.在可以指向节点D的所有路径中选择出其中最短的一个路径SP,查找出该路径SP指向的所有节点的集合A,在所述集合A中找到节点D的位置,作为节点D的索引I,路径SP加索引I作为节点D的路径。本发明所述的针对HTMLElement的CSS选择器最短路径反查算法解决了获得该节点优化和扩展的最短CSS查询路径(CSSPath)的问题。
Description
技术领域
本发明属于网络前端开发领域,尤其是涉及一种针对HTMLElement的CSS选择器最短路径反查算法。
背景技术
XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。在现有技术XPath表达节点路径中,使用者不得不接受一套日常并不常用的语法规范。该技术是针对XML的,用于对HTML文档的节点查询的实践中,表达结果过于冗长。在HTML中使用XPath语法对节点路径进行反查,在当下和也是一项效率低下的任务。当代浏览器中JavaScript解释器已经能内置CSS查询器,所以用CSSPath来代替XPath既能提高软件的开发效率、又能提高软件的运行效率。
发明内容
有鉴于此,本发明旨在提出一种针对HTMLElement的CSS选择器最短路径反查算法,以提高节点的查询效率。
为达到上述目的,本发明的技术方案是这样实现的:
针对HTMLElement的CSS选择器最短路径反查算法,设定节点D为当前节点,算法包括
S1.根据当前节点的属性值id或者class,确定当前节点的路径,若该节点的路径唯一指向当前节点,则结束算法,若不唯一指向当前节点,则设定节点D的路径为路径S,进入步骤S2;
S2.循环将当前节点的父节点路径叠加在路径S上,得到新的节点D的路径,若该D节点路径唯一指向节点D,则结束算法,若不唯一指向节点D,则进入步骤S3;
S3.在可以指向节点D的所有路径中选择出其中最短的一个路径SP,并查找出该路径SP指向的所有节点的集合A,在所述集合A中找到节点D的位置,作为节点D的索引I,路径SP加索引I作为节点D的路径。
进一步的,所述步骤S1包括
S11.判断当前节点是否有专属于它的id,若有,则当前节点路径为id,算法结束,若无,则进入步骤S12。
S12.判断当前节点的当前节点路径加class能否唯一指向当前节点,若能,则当前节点路径为id加class,算法结束,若不能,则进入步骤S2。
进一步的,所述步骤S11包括
S111.判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S112,若无,则进入步骤S12;
S112.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则进入步骤S12。
进一步的,所述步骤S12包括
S121.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S122,若无,则设定节点D的路径为路径S,进入步骤S2;
S122.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则设定节点D的路径为路径S,进入步骤S2。
进一步的,所述步骤S2包括
S21.将当前节点的父节点设为新的当前节点,查找当前节点的路径,设定新的路径S为当前节点路径加路径S,进入步骤S22;
S22.判断路径S是否唯一指向节点D,若是,则结束算法,若否,则进入步骤S23;
S23.判断当前节点是否为根节点,若是,则进入步骤S3;若否,则进入步骤S21。
进一步的,所述步骤S21包括
S211.将当前节点的父节点设为新的当前节点,判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S212,若无,则进入步骤S213;
S212.判断当前节点路径是否唯一指向当前节点,若是,则进入步骤S214,若否,则进入步骤S213;
S213.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S214,若无,进入步骤S214;
S214.设定新的路径S为当前节点路径加路径S,进入步骤S22。
进一步的,判断节点路径是否唯一指向节点的方法为查找出节点路径指向的所有的节点集合,若该集合的长度为1,则可认定节点路径唯一指向该节点。
相对于现有技术,本发明所述的针对HTMLElement的CSS选择器最短路径反查算法具有以下优势:
本发明所述的针对HTMLElement的CSS选择器最短路径反查算法解决了获得该节点优化和扩展的最短CSS查询路径(CSSPath)的问题,既能提高软件的开发效率、又能提高软件的运行效率。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的步骤S1的流程图;
图2为本发明实施例所述的步骤S2的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在编辑测试代码时,需要通过捕捉某一确定元素的css路径从而选中该元素,并要求该元素是唯一的。查找节点css路径的方法为
如图1所示,S111.判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S112,若无,则进入步骤S12;这一步先行检测节点是否具有id
S112.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则进入步骤S12。若具有只属于节点的id,则找到最短路径,算法可以结束,若没有id或者id不唯一指向该节点,就需要进入下一个步骤,检查节点的id。
S121.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S122,若无,则设定节点D的路径为路径S,进入步骤S2;对节点的class属性就行判断,作为进一步限定路径的属性值。
S122.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则设定节点D的路径为路径S,进入步骤S2;
如图2所示,S211.将当前节点的父节点设为新的当前节点,判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S212,若无,则进入步骤S213;在id和class属性都无法唯一确定节点路径的情况下,在节点路径上加入父节点路径,用以作为唯一指向节点的路径。
S212.判断当前节点路径是否唯一指向当前节点,若是,则进入步骤S214,若否,则进入步骤S213;
S213.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S214,若无,进入步骤S214;
S214.设定新的路径S为当前节点路径加路径S,进入步骤S22。
S22.判断路径S是否唯一指向节点D,若是,则结束算法,若否,则进入步骤S23;
S23.判断当前节点是否为根节点,若是,则进入步骤S3;若否,则进入步骤S21。只要路径不唯一且父节点不为根节点,就要一直循环迭代更上一层父节点的路径。
S3.在可以指向节点D的所有路径中选择出其中最短的一个路径SP,并查找出该路径SP指向的所有节点的集合A,在所述集合A中找到节点D的位置,作为节点D的索引I,路径SP加索引I作为节点D的路径。经过步骤S1和步骤S2,还未能找到唯一指向节点的路径,只能查找出的节点集合中,节点的位置作为索引,路径加索引可以唯一指向节点。
通过本发明中css路径选择器,可以在浏览器中通过鼠标点选的方式直接获得该对象的css路径,极大程度的优化测试过程的编写工作,真正的实现自动化测试。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:设定节点D为当前节点,算法包括
S1.根据当前节点的属性值id或者class,确定当前节点的路径,若该节点的路径唯一指向当前节点,则结束算法,若不唯一指向当前节点,则设定节点D的路径为路径S,进入步骤S2;
S2.循环将当前节点的父节点路径叠加在路径S上,得到新的节点D的路径,若该D节点路径唯一指向节点D,则结束算法,若不唯一指向节点D,则进入步骤S3;
S3.在可以指向节点D的所有路径中选择出其中最短的一个路径SP,并查找出该路径SP指向的所有节点的集合A,在所述集合A中找到节点D的位置,作为节点D的索引I,路径SP加索引I作为节点D的路径。
2.根据权利要求1所述的针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:所述步骤S1包括
S11.判断当前节点是否有专属于它的id,若有,则当前节点路径为id,算法结束,若无,则进入步骤S12。
S12.判断当前节点的当前节点路径加class能否唯一指向当前节点,若能,则当前节点路径为id加class,算法结束,若不能,则进入步骤S2。
3.根据权利要求2所述的针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:所述步骤S11包括
S111.判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S112,若无,则进入步骤S12;
S112.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则进入步骤S12。
4.根据权利要求2所述的针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:所述步骤S12包括
S121.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S122,若无,则设定节点D的路径为路径S,进入步骤S2;
S122.判断当前节点路径是否唯一指向当前节点,若是,则算法结束,若否,则设定节点D的路径为路径S,进入步骤S2。
5.根据权利要求1所述的针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:所述步骤S2包括
S21.将当前节点的父节点设为新的当前节点,查找当前节点的路径,设定新的路径S为当前节点路径加路径S,进入步骤S22;
S22.判断路径S是否唯一指向节点D,若是,则结束算法,若否,则进入步骤S23;
S23.判断当前节点是否为根节点,若是,则进入步骤S3;若否,则进入步骤S21。
6.根据权利要求5所述的针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:所述步骤S21包括
S211.将当前节点的父节点设为新的当前节点,判断当前节点是否有id,若有,则当前节点路径为id,进入步骤S212,若无,则进入步骤S213;
S212.判断当前节点路径是否唯一指向当前节点,若是,则进入步骤S214,若否,则进入步骤S213;
S213.判断当前节点是否有class,若有,则当前节点路径加上class成为新的节点路径,进入步骤S214,若无,进入步骤S214;
S214.设定新的路径S为当前节点路径加路径S,进入步骤S22。
7.根据权利要求1所述的针对HTMLElement的CSS选择器最短路径反查算法,其特征在于:判断节点路径是否唯一指向节点的方法为查找出节点路径指向的所有的节点集合,若该集合的长度为1,则可认定节点路径唯一指向该节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510438532.8A CN105094940B (zh) | 2015-07-23 | 2015-07-23 | 针对HTMLElement的CSS选择器最短路径反查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510438532.8A CN105094940B (zh) | 2015-07-23 | 2015-07-23 | 针对HTMLElement的CSS选择器最短路径反查方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094940A true CN105094940A (zh) | 2015-11-25 |
CN105094940B CN105094940B (zh) | 2018-05-25 |
Family
ID=54575449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510438532.8A Active CN105094940B (zh) | 2015-07-23 | 2015-07-23 | 针对HTMLElement的CSS选择器最短路径反查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094940B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073702A1 (en) * | 2002-10-10 | 2004-04-15 | Rong Guangyi David | Shortest path search method "Midway" |
CN102254009A (zh) * | 2011-07-15 | 2011-11-23 | 福建星网锐捷通讯股份有限公司 | 一种网页表格数据抽取的方法 |
CN103544176A (zh) * | 2012-07-13 | 2014-01-29 | 百度在线网络技术(北京)有限公司 | 用于生成多个页面所对应的页面结构模板的方法和设备 |
CN103744674A (zh) * | 2014-01-06 | 2014-04-23 | 北京奇虎科技有限公司 | 生成html程序代码的方法和装置 |
CN104462268A (zh) * | 2014-11-24 | 2015-03-25 | 深圳市比一比网络科技有限公司 | 一种html文档信息抽取表达式的方法及系统 |
-
2015
- 2015-07-23 CN CN201510438532.8A patent/CN105094940B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073702A1 (en) * | 2002-10-10 | 2004-04-15 | Rong Guangyi David | Shortest path search method "Midway" |
CN102254009A (zh) * | 2011-07-15 | 2011-11-23 | 福建星网锐捷通讯股份有限公司 | 一种网页表格数据抽取的方法 |
CN103544176A (zh) * | 2012-07-13 | 2014-01-29 | 百度在线网络技术(北京)有限公司 | 用于生成多个页面所对应的页面结构模板的方法和设备 |
CN103744674A (zh) * | 2014-01-06 | 2014-04-23 | 北京奇虎科技有限公司 | 生成html程序代码的方法和装置 |
CN104462268A (zh) * | 2014-11-24 | 2015-03-25 | 深圳市比一比网络科技有限公司 | 一种html文档信息抽取表达式的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105094940B (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105706078B (zh) | 实体集合的自动定义 | |
Ferrara et al. | Data linking for the semantic web | |
JP5527027B2 (ja) | スキーマ定義生成装置、スキーマ定義生成方法およびスキーマ定義生成プログラム | |
US20180330008A1 (en) | Incremental Graph Computations for Querying Large Graphs | |
JP2010501096A (ja) | ラッパー生成およびテンプレート検出の協同最適化 | |
CN104850554A (zh) | 一种搜索方法和系统 | |
CN104573039A (zh) | 一种关系数据库的关键词查询方法 | |
US20180089242A1 (en) | Hierarchic model and natural language analyzer | |
CN109558166A (zh) | 一种面向缺陷定位的代码搜索方法 | |
CN114385397A (zh) | 基于故障传播图的微服务故障根因定位方法 | |
CN103198133B (zh) | 一种将XPath查询转换为树形数据结构的查询优化方法 | |
Dohrn et al. | Fine-grained change detection in structured text documents | |
CN105094940A (zh) | 针对HTMLElement的CSS选择器最短路径反查算法 | |
Chen et al. | Mining schema matching between heterogeneous databases | |
Sangeetha et al. | Page ranking algorithms used in Web Mining | |
Nair et al. | Improvised Apriori with frequent subgraph tree for extracting frequent subgraphs | |
CN106933844A (zh) | 面向大规模rdf数据的可达性查询索引的构建方法 | |
Guo et al. | RED: Redundancy-Driven Data Extraction from Result Pages? | |
JP2011029890A (ja) | ネットワーク設計装置およびネットワーク設計方法 | |
CN104714951A (zh) | 一种并行多模式匹配的方法及系统 | |
CN110188432B (zh) | 系统架构的验证方法、电子设备及计算机可读存储介质 | |
Torre-Bastida et al. | Query rewriting for an incremental search in heterogeneous linked data sources | |
CN104615720B (zh) | 一种基于索引的xml文档查询优化方法 | |
CN107256218A (zh) | 一种xml流数据的快速查询方法 | |
KR102032258B1 (ko) | 링크 분석을 통한 융합기술 예측 방법 |
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 |