CN117668396A - 一种获取次级页面的方法、装置及计算机设备 - Google Patents
一种获取次级页面的方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN117668396A CN117668396A CN202211071324.5A CN202211071324A CN117668396A CN 117668396 A CN117668396 A CN 117668396A CN 202211071324 A CN202211071324 A CN 202211071324A CN 117668396 A CN117668396 A CN 117668396A
- Authority
- CN
- China
- Prior art keywords
- page
- url
- acquiring
- detection
- dom
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000001514 detection method Methods 0.000 claims abstract description 87
- 230000015654 memory Effects 0.000 claims description 29
- 230000006399 behavior Effects 0.000 claims description 20
- 230000006854 communication Effects 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000004088 simulation Methods 0.000 claims description 10
- 238000011161 development Methods 0.000 claims description 8
- 230000007175 bidirectional communication Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 5
- 238000012360 testing method Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 238000007689 inspection Methods 0.000 description 13
- 239000003973 paint Substances 0.000 description 9
- 238000009877 rendering Methods 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013515 script Methods 0.000 description 7
- 206010047289 Ventricular extrasystoles Diseases 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 238000005129 volume perturbation calorimetry Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 229910052711 selenium Inorganic materials 0.000 description 3
- 239000011669 selenium Substances 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 230000009193 crawling Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 210000001503 joint Anatomy 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000001545 Page's trend test Methods 0.000 description 1
- 241000036848 Porzana carolina Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013142 basic testing Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000003631 expected effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种获取次级页面的方法、装置及计算机设备,应用于网页自动化爬虫领域。该方法中,访问第一页面,获取所述第一页面上的DOM节点;模拟对DOM节点的点击操作;拦截第一页面的切换,并获取待切换的第二页面的URL;根据所述URL获取所述第二页面的内容。在传统的网页检测中,对页面的<a>标签进行扫描获取次级页面的URL,但是基于SPA框架的页面并没有<a>标签,而是使用路由处理函数代码模拟页面切换,故无法适应于SPA页面;而本申请提供的获取次级页面的方法,并不是通过扫描<a>标签获取次级页面,而是通过模拟进入次级页面并拦截次级页面,并捕捉次级页面URL,能够应用于包括SPA页面在内的多种页面。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种获取次级页面的方法、装置及计算机设备。
背景技术
目前,业界的页面门禁系统,多使用开源软件对页面性能进行检查,或使用用户界面(user interface,UI)测试工具进行基础测试用例的检测。例如使用Lighthouse工具生成页面性能报告,使用Selenium(一种Web应用程序测试的工具)执行端到端(end to end,E2E)测试用例。
常见的网络爬虫会对页面的HTML语言标签(<a>标签)进行扫描,获取次级页面的统一资源定位系统(uniform resource locator,URL)。但是在单页面应用(single pageweb application,SPA)下,此方法不再有效,因为SPA中使用路由(router)机制执行编程语言javascript代码控制页面内容切换,模拟页面跳转效果,而非真正发生页面跳转,目前的网络爬虫在SPA下抓取不到次级页面URL。如图1所示,打开基于SPA框架的页面(例如使用Angular/React/Vue框架实现),点击页面内按钮“页面一”或“页面二”,会经由SPA框架的router控制动态加载对应页面资源,将页面切换到页面一或页面二,但不会发生页面跳转。因此,基于常规网络爬虫技术的门禁系统,对于SPA仅能打开首页进行门禁检查,无法覆盖次级页面,覆盖率低,达不到预期效果。
为了实现对SPA的全页面检测,可以通过硬编码指定页面URL或指定页面元素选择器进行模拟点击打开次级页面。此种方式不具备通用性,一般仅在单一业务场景下使用。但由于门禁系统区别于测试系统,门禁系统的测试用例需要具备通用性。门禁测试场景下被测页面众多,针对每个页面编写对应的自动化测试用例脚本,会使得测试用例脚本数量级很大,开发及维护成本无法承受。
因此,如何提高门禁系统的测试通用性,是目前发展门禁系统过程中亟待解决的问题。
发明内容
本申请实施例提供一种获取次级页面的方法、装置及计算机设备,用于在不同应用下均实现对次级页面的自动获取。
第一方面,本申请实施例提供一种获取次级页面的方法,包括:
访问第一页面,获取所述第一页面上的文档对象模型DOM节点;模拟对所述DOM节点的点击操作;拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,所述第二页面为所述第一页面的次级页面。
在上述方法中,由于获取次级页面URL的方式不再限制于仅通过扫描第一页面的<a>标签获取次级页面URL,而是通过模拟访问次级页面的方式获取次级页面URL,该方法能够应用于SPA应用的页面中,能够应用于通过完全刷新的方式进入次级页面的场景中,还能够应用于一般的通过新建页面访问次级页面的场景中。对于单页面应用或者通过刷新进入次级页面的应用,避免了仅能够获取到首页信息,而无法获取次级页面信息的问题。进一步的,对于页面的自动检查、自动测试、网页爬虫等场景,能够基于上述方法获取次级页面信息,从而对次级页面进行自动检查、自动测试等,能够提高系统的覆盖率,且不需要针对每个页面进行硬编码,降低了工作量、提高了系统的普适性。
在一种可能的实现方式中,所述拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,包括:当所述第一页面为SPA页面时,拦截所述第一页面的路由切换操作,并获取路由的目标URL。在SPA应用中,可以监听页面URL的更新,在监听到URL更新时记录更新后的URL,即获取第二页面的URL,并对浏览器的切换操作进行拦截,这样,第一页面并没有切换为第二页面,同时也获取到了第二页面的URL。
在一种可能的实现方式中,所述拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,包括:拦截访问第二页面的请求,并获取所述第二页面的URL。通过监听访问请求,从访问请求中获取第二页面的URL,并拦截访问请求,使其没有真正被发送,实现第一页面并没有切换为第二页面,同时也获取到了第二页面的URL。
在一种可能的实现方式中,所述拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,包括:监听目标创建targetcreated事件,若监听到targetcreated事件,关闭新打开的第二页面,并获取所述第二页面的URL。在上述实现方式中,通过监听targetcreated事件,获取新打开的第二页面的URL,并关闭第二URL,以实现仍位于第一页面的位置的同事获取到第二页面的URL。
在一种可能的实现方式中,所述模拟对所述DOM节点的点击操作,包括:获取所述DOM节点对应的触发事件;若所述DOM对应的触发事件包括点击事件,模拟对所述DOM节点的点击操作。DOM节点的触发事件可以有多种类型,如点击、鼠标移动、鼠标悬停等,由于本申请实施例的目的是获取次级页面,而进入次级页面的触发时间通常为点击,故可以对DOM节点的触发事件进行筛选,对触发事件包括点击的DOM节点进行后续操作。
在一种可能的实现方式中,所述方法还包括:与浏览器建立双向通讯网络通信协议websocket连接;所述获取所述第一页面上的DOM节点,包括:通过浏览器开发工具协议CDP获取所述第一页面上的DOM节点。与浏览器建立websocket连接,使得能够基于CDP协议与浏览器内核进行交互,进而实现前述获取次级页面的操作。
在一种可能的实现方式中,在获取所述第二页面的URL之后,所述方法还包括:根据所述第二页面的URL,对所述第二页面进行检测。上述获取次级页面的方法可以应用于对页面进行自动检测的场景中,以提高页面自动检测的覆盖范围。
在一种可能的实现方式中,所述根据所述第二页面的URL,对所述第二页面进行检测,包括:判断所述第二页面的URL是否与已获取到的其他页面的URL重复;若不重复,根据所述URL对第二页面进行页面检测。获取到的第一页面的多个次级页面中可能存在重复的页面,对其进行去重操作,以使后续对第一页面的次级页面进行页面检测或其他操作时,能够避免对相同的页面进行重复操作。
在一种可能的实现方式中,所述页面检测,包括以下一种或多种检测:页面规范检测,用户行为分析能力检测,页面异常页检测,页面性能检测。其中,规范检测可以包括对以下内容中的一种或多种进行检测:字体库,文字大小,文字颜色,边框颜色,背景颜色,阴影色,模块间距,模块对齐等。对用户行为分析能力的检测可以指,检测页面是否具备对用户行为进行分析、上报的能力,如,是否对用户行为进行监听,是否留有监听上报接口等。页面异常检测可以包括对以下内容中的一种或多种进行检测:页面元素属性,页面文字,页面布局,javascript执行异常,请求接口异常,超链接失效,框架版本等。页面性能指标检测可以包括对以下内容中的一种或多种进行检测:首次页面内容渲染(first contentful paint,FCP)、首次有意义渲染(first meaningful paint,FMP)、最大内容渲染(largestcontentful paint,LCP)、可交互时间(time to interactive,TTI)、页面加载速度(SI)、总体阻塞时间(total blocking time,TBT)等页面性能指标。
第二方面,本申请实施例提供一种获取次级页面的装置,包括:访问模块,用于访问第一页面,获取所述第一页面上的文档对象模型DOM节点;模拟模块,用于模拟对所述DOM节点的点击操作;拦截模块,用于拦截打开第二页面,所述第二页面为所述第一页面的次级页面;获取模块,用于获取所述第二页面的统一资源定位器URL。
在一种可能的实现方式中,所述拦截模块,具体用于:当所述第一页面为SPA页面时,拦截所述第一页面的路由切换操作,并获取路由的目标URL。
在一种可能的实现方式中,所述拦截模块,具体用于:拦截访问第二页面的请求,并获取所述第二页面的URL。
在一种可能的实现方式中,所述拦截模块,具体用于:监听目标创建targetcreated事件,若监听到targetcreated事件,关闭新打开的第二页面,并获取所述第二页面的URL。
在一种可能的实现方式中,所述模拟模块,具体用于:获取所述DOM节点对应的触发事件;若所述DOM对应的触发事件包括点击事件,模拟对所述DOM节点的点击操作。
在一种可能的实现方式中,所述装置还包括连接模块,用于与浏览器建立双向通讯网络通信协议websocket连接;所述访问模块在获取所述第一页面上的DOM节点时,具体用于:通过浏览器开发工具协议CDP获取所述第一页面上的DOM节点。
在一种可能的实现方式中,所述装置还包括检测模块,用于:根据所述第二页面的URL,对所述第二页面进行检测。
在一种可能的实现方式中,所述检测模块具体用于:判断所述第二页面的URL是否与已获取到的其他页面的URL重复;若不重复,根据所述URL对第二页面进行页面检测。
在一种可能的实现方式中,所述页面检测,包括以下一种或多种检测:页面规范检测,用户行为分析能力检测,页面异常页检测,页面性能检测。其中,规范检测可以包括对以下内容中的一种或多种进行检测:字体库,文字大小,文字颜色,边框颜色,背景颜色,阴影色,模块间距,模块对齐等。对用户行为分析能力的检测可以指,检测页面是否具备对用户行为进行分析、上报的能力,如,是否对用户行为进行监听,是否留有监听上报接口等。页面异常检测可以包括对以下内容中的一种或多种进行检测:页面元素属性,页面文字,页面布局,javascript执行异常,请求接口异常,超链接失效,框架版本等。页面性能指标检测可以包括对以下内容中的一种或多种进行检测:首次页面内容渲染(first contentful paint,FCP)、首次有意义渲染(first meaningful paint,FMP)、最大内容渲染(largestcontentful paint,LCP)、可交互时间(time to interactive,TTI)、页面加载速度(SI)、总体阻塞时间(total blocking time,TBT)等页面性能指标。
第三方面,本申请实施例提供一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器存储有计算机程序;所述处理器用于调用所述存储器中存储的计算机程序,以执行如第一方面及第一方面任一实现方式所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面及第一方面任一实现方式所述的方法。
第五方面,本申请实施例提供一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如第一方面及第一方面任一项所述的方法。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当所述指令被计算设备或计算机设备集群运行时,使得所述计算设备集群执行如第一方面及第一方面任一项所述的方法。
上述第二方面至第六方面中任一方面中的任一可能实现方式可以实现的技术效果,请参照上述第一方面中相应实现方案可以达到的技术效果说明,重复之处不予论述。
附图说明
图1为本申请实施例提供的一种SPA框架页面示意图;
图2为本申请实施例提供的将页面门禁系统接入CI/CD流水线示意图;
图3为本申请实施例提供的页面门禁系统的功能示意图;
图4为本申请实施例提供的页面门禁系统测试用例示意图;
图5为本申请实施例提供的页面门禁系统部署在虚拟化集群的示意图;
图6为本申请实施例提供的获取次级页面的方法的流程示意图;
图7为本申请实施例提供的拦截第二页面的流程示意图;
图8为本申请实施例提供的页面规范检测流程示意图;
图9为本申请实施例提供的页面用户行为分析能力检测流程示意图;
图10为本申请实施例提供的获取次级页面装置的结构示意图;
图11为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
页面门禁系统TinyGate,能够对接在前端持续集成(continuous integration,CI)/持续部署(continuous deployment,CD)流水线上对页面进行性能、规范、安全、异常等检查,拦截不合规页面发布行为的系统。页面门禁系统TinyGate可以通过无界面浏览器(headless)访问页面,对页面进行多维度信息收集,检测合规性。
将页面门禁系统TinyGate接入CI/CD流水线时,该流水线的操作流程可以如图2所示。首先是构建流程,就是将特性分支从代码仓库输入至构建机,构建机执行构建脚本,输出用于部署到线网的代码包。第一部署节点用于将构建机输出的代码包部署到测试环境中。页面门禁系统对特性分支中涉及的页面进行规范检测,若没有通过检测,则卡点进行拦截不允许未通过测试特性分支进入第二部署节点,若通过检测,可以通过手动点击卡点使得特性分支进入第二部署节点。第二部署节点将通过测试的特性分支的代码部署在正式发布的环境中,通过设置的卡点,使得在正式环境中部署正常的特性分支将被合入主干中。
页面门禁系统TinyGate本质上是一种测试系统,它的执行过程与UI的E2E测试过程类似。页面门禁系统基于自动化测试框架与断言库,自动打开浏览器访问被测页面,执行测试用例。门禁系统的测试用例偏向于规范类和基线类,是较为通用的,不专属于特定的云服务场景,例如云服务页面体验设计规范、页面性能基线等。在整个发布流程中,各云服务自己完成其页面的测试用例,进行α阶段的测试(如功能性测试)、β阶段的测试(如集成测试),页面门禁系统的测试内容属于γ阶段(如规范检测)。页面门禁系统检测云服务预发环境的页面,是页面发布线网前的最后一道防线,是发布线网环境的准入门槛。
页面门禁系统TinyGate的主要功能包括:
一、检查页面问题
页面门禁系统TinyGate检查项主要包括两类:规范类和基线类。规范类包括:体验规范、web可测试性规范、上报规范、国际化词条规范、控制台(console)十统一规范等;基线类包含:页面性能基线、页面请求异常基线、javascript执行期异常基线等。
页面门禁系统TinyGate能够帮助规范制定者自动发现页面不符合规范的问题,能够满足CloudBU对页面发布基线的检测要求。对规范类问题而言,检查形式由线网定期人工巡检转变为发布流程中的页面门禁自动化测试环节,发现问题时机提前至研发流程中,能够起到规避线网问题,提升用户体验和满意度的作用。对基线类问题而言,能够辅助开发者发现基础问题,拦截因失误、遗漏等造成的低级问题,避免发布至线网,比如页面报错、接口不通、外部链接失效、错别字等页面异常。
此外,页面门禁系统TinyGate提供在线和离线两个版本,在线版提供Saas服务,和CI/CD流水线对接,开发者发布页面时自动进行门禁检查。离线版是命令行工具,可以在开发者本地环境执行,可以对研发流程中任意环境执行门禁系统测试用例。使用离线版的命令行工具,不必等到发布至预发环境做门禁检查,检查出问题再做修改,修改完成后再重新从最初状态执行发布流水线,以便提前发现问题进行改善,提高研发效率。在线版和离线版都会生成门禁检测报告,提示问题及修复建议,帮助云服务改进页面质量。
二、拦截页面发布
云服务发布会经历代码门禁检查、构建、打包、传包、部署测试环境、自动化测试、人工测试、部署预发环境、页面门禁检查、部署线网等阶段。而页面门禁系统TinyGate能够与前端发布流水线对接,在部署现网前对云服务预发环境页面进行检查,如果检查结果不达标,则会拦截云服务发布。
三、生成检测报告
页面门禁系统TinyGate使用多种门禁检查项对页面进行检测,检测结果以报告形式展现,检测报告包含了问题描述、改进建议、规范或基线描述等内容,可以辅助云服务定位问题、改进问题、熟悉规范要求。
页面门禁系统的功能还可以包括如图3所示的各项功能,此处不再一一举例。
其中,在对页面进行检查时,需要页面门禁系统访问页面URL,对访问页面中的内容进行检查,并基于Selenium、Puppeteer等工具构建的网页爬虫系统,抓取次级页面;然后对抓取到的每个次级页面执行规范检测用例脚本以进行页面检测,生成相应的检测报告。
传统的网页爬虫系统在抓取次级页面时,通常采用抓取页面HTML语言(<a>标签),解析<a>标签的超文本引用(hypertext reference,href)属性,从而获得次级页面的URL。然而,对于SPA页面,传统的网页爬虫系统抓取次级页面URL的方法无法奏效。因为,SPA中使用路由(router)机制实现页面内容切换,模拟页面跳转效果,而非真正发生页面跳转,而非通过<a>标签进行页面跳转,故页面门禁系统在基于传统的网页爬虫系统对SPA页面进行页面检测时,仅能够访问首页,对首页进行检测,而无法获取到次级页面对次级页面进行检测,覆盖率低。
一种解决上述问题的方法是,使用Selenium、Puppeteer等工具针对指定页面编写自动化测试用例脚本来对页面规范检查。在这种方式下,需要对每个次级页面进行硬编码(将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践的操作),或者通过硬编码实现点击页面中的按钮以打开次级页面进行检测。但是,此种方式不具备通用性,一般仅在单一业务场景下使用,无法适用于大规模业务页面的场景。例如在图4所示的页面门禁系统中,需要对m个业务的页面进行检测,可以理解为需要对m个应用的页面进行检测,而每个业务又包括n个,即一个应用包括n个页面,那么需要对m*n个页面分别进行硬编码得到m*n测试用例,以进行页面检测。
有鉴于此,本申请实施例提供一种获取次级页面的方法,该方法能够在不同应用下均实现对次级页面的自动获取。该方法可以应用于页面检查、页面测试、网页爬虫等场景中,通过上述方法自动获取次级页面,然后自动对获取到的次级页面进行页面检查、测试等功能。
本申请实施例提供的获取次级页面的方法可以由计算机设备(如服务器等)执行,也可以由计算机集群执行,还可以由虚拟机、容器、命令行工具等执行。例如,页面门禁系统部署在虚拟化集群中,如部署在Kubernetes集群的容器(docker)中。如图5所示,在Kubernetes集群中包括若干虚拟化容器(docker),每个容器可以配置有框架(soraservice)、主机(master)、工作者(worker)、框架的消息队列(sora-amqp);本申请实施例提供的获取次级页面的方法可以由Kubernetes集群中的一个或多个容器(docker)执行。
下面以服务器执行获取次级页面的方法为例,对本申请实施例进行详细说明。应当理解,将服务器替换为虚拟机、容器等。
参见图6,为本申请实施例提供的获取次级页面的方法的流程示意图,如图所示,该方法可以包括以下步骤:
步骤601、服务器访问第一页面,获取第一页面上的文档对象模型(documentobject model,DOM)节点。
其中,第一页面可以是网站首页,也可以是网站的某个次级页面。例如,在页面规范检查场景中,待检查的任意页面均可以作为上述第一页面,服务器可以对第一页面执行该获取次级页面方法的步骤,以获取第一页面的次级页面。
DOM节点是用来呈现以及与其他超文本标记语言(hyper text markup language,HTML)文档或可扩展标记语言(extensible markup language,XML)文档交互的应用程序接口(application program interface,API)。DOM节点是载入到浏览器中的文档模型,以节点树的形式来表现文档,每个节点代表文档的构成部分(例如页面元素、字符串或注释等等)。DOM节点是万维网(world wide web,www或者web)上使用最为广泛的API之一,它允许运行在浏览器中的代码访问文件中的节点并与之交互。DOM节点可以被创建,移动或修改;事件监听器可以被添加到DOM节点上并在特定事件发生时触发。
在一种可能的设计中,服务器可以通过访问第一页面后,可以与浏览器建立websocket连接,然后通过浏览器开发工具协议(chrome devtools protocol,DCP)与浏览器(chrome)的内核进行交互,从而获取第一网页包含的DOM节点。具体的,服务器可以通过DCP获取第一页面的页面信息、DOM树信息以及每个DOM节点绑定的触发事件等等。
DOM节点绑定的触发事件可以包括点击(click)、鼠标移动(mousemove)、鼠标悬停(mousemove)等等。由于本申请实施例的目的是获取次级页面,而进入次级页面的触发时间通常为click,因此,在一种可能的实现方式中,服务器在获取到第一页面包含的DOM树后,可以对DOM树中的节点进行筛选,保留触发事件为click的DOM节点,剔除触发事件为其他事件的DOM节点。
步骤602、服务器模拟对DOM节点的点击操作。
第一页面可能包括多个DOM节点,即使根据绑定的触发事件对DOM节点进行筛选过后,仍然可能包括多个DOM节点。在第一页面包括多个触发事件为click的DOM节点时,那么服务器执行上述步骤602至步骤603时,可以针对每个DOM节点分别执行。例如,服务器可以在对DOM树根据触发事件进行筛选后,遍历保留下的每个DOM节点,并执行步骤602至步骤603。
具体的,服务器可以基于DCP与浏览器的内核进行交互,以实现在没有实际用户进行点击操作时模拟对DOM节点的点击操作,从而触发打开第一页面的次级页面,即第二页面。
步骤603、服务器拦截打开第二页面,并获取第二页面的URL。
服务器模拟对DOM节点的点击操作,是为了获取第二页面的URL,但并不需要真的打开第二页面,若第一页面为SPA页面,更不希望从第一页面跳转至第二页面。以对页面进行自动检查的应用场景为例,服务器访问第一页面后,主要操作包括两种:一是获取第一页面的次级页面即第二页面的URL,以使后面能够对第二页面进行页面规范检测;二是对第一页面的内容进行规范检测。若服务器在模拟点击第二页面后,不对第二页面进行拦截,对于SPA页面来说,将从第一页面切换至第二页面,而第一页面消失则无法对其进行页面检测或执行其他操作;对于普通网站来说,将新打开一个页面(即第二页面),那么焦点则会变成第二页面,也不利于服务器对第一页面进行页面检测或其他操作。因此,在上述步骤603中,服务器可以对第二页面进行拦截。
由于不同应用打开第二页面的形式不同,故本申请实施例可以针对不同的打开第二页面的方式,进行不同的拦截操作,如图7所示:
一、对于SPA页面的拦截操作
对于SPA页面,浏览器仅加载一次页面,当对DOM节点进行点击触发进入第二页面时,SPA页面通过路由(router)机制,在不完全刷新的情况下进行视图的切换,即页面的URL变了,但是并没有重新加载。路由(router)描述了URL与UI之间的映射关系,这种映射是单向的,即URL变化引起UI更新(无需刷新页面)。
在这种情况下,服务器在对DOM节点进行模拟点击后,浏览器无需向内容服务器发送获取第二页面的请求,而是通过路由(router)机制更新URL,从而实现页面切换。服务器可以监听URL的更新,在监听到URL更新时记录更新后的URL,即获取第二页面的URL,并对浏览器的切换操作进行拦截,这样,第一页面并没有切换为第二页面,同时服务器也获取到了第二页面的URL。
可选的,服务器可以基于CDP对该DOM节点注入javascript脚本,以修改路由(router)机制相关代码,监听浏览器hashchange和popstage事件,使得浏览器执行更新URL操作时,根据更新URL操作获取更新后的URL,但并不执行后续UI更新操作,以实现对路由(router)切换的拦截操作。
二、对于需要刷新的页面的拦截操作
对于这一类页面,浏览器在接收到对页面DOM节点的点击操作后,向内容服务器发送访问第二页面的请求,该请求中包括第二页面的URL,内容服务器根据第二页面的URL将第二页面的内容信息发送给浏览器,浏览器对获取到的内容信息进行渲染并显示。浏览器显示第二页面时不需要打开新的页面,而是在当前页面进行显示,即对第一页面进行刷新。
在这种情况下,服务器可以监听浏览器是否发送了访问第二页面的请求,并获取浏览器发送的访问第二页面的请求,然后根据请求获取第二页面的URL。
可选的,服务器可以基于CDP在浏览器内核中添加requestPaused回调方法的脚本,即,浏览器发送了访问第二页面的请求,后浏览器通过运行requestPaused回调方法的程序脚本,从而实现拦截访问请求,避免第一页面跳转至第二页面后服务器无法对第一页面进行继续检测或其他操作。
三、对于创建新页面的拦截操作
对于该类页面,浏览器在接收到对页面DOM节点的点击操作后,创建新的页面,并向内容服务器发送访问第二页面的请求,该请求中包括第二页面的URL,内容服务器根据第二页面的URL将第二页面的内容信息发送给浏览器,浏览器对获取到的内容信息进行渲染,并在新创建的页面中显示第二页面。
在这种情况下,服务器可以监听浏览器的目标创建(targetcreated)事件,当监听到浏览器创建新的页面时,可以根据访问请求或第二页面的URL,并关闭新创建的页面,以避免焦点变至第二页面,使得服务器无法继续对第一页面进行页面检测或其他操作。
服务器在对第一页面的每个DOM节点执行完上述步骤603后,服务器则能够获取到第一页面的一个或多个次级页面的URL。
在一种可能的实现方式中,在获取到第一页面的多个次级页面的URL后,服务器还可以对多个次级页面的URL进行去重,以使后续对第一页面的次级页面进行页面检测或其他操作时,能够避免对相同的页面进行重复操作。
由于次级页面的URL常常会带有参数信息,而带有不同参数的URL实际上可能是相同的页面。例如,次级页面1的URL为https://www.test.com/detail?B=b&C=c&A=a,其中,包含的参数B、C、A对应的参数值分别为b、c、a,然而,不同的页面中的参数值可能不同,但实际上是相同的页面。在这种情况下,服务器可以对获取到的次级页面的URL,去除参数值value(即上述b、c、a),保留参数key(即上述B、C、A),得到字符串https://www.test.com/detail?B&C&A。进一步的,服务器可以对得到的字符串进行哈希(hash)运算,若得到的哈希值与其他次级页面对应的哈希值均不相同,则认为该次级页面与其他次级页面不属于相同的页面;若与其他次级页面的哈希值相同,则认为该页面属于重复页面。
可选的,服务器可以针对第一页面维护对应的次级页面URL队列,每获取到第一页面的一个次级页面,按照上述方法得到该页面对应的哈希值,然后将该哈希值与URL队列中存在的URL的哈希值进行比较,若均不相同,则将新获取的次级页面的URL添加至URL队列中,否则,丢弃该URL。在对第一页面所包含的DOM树遍历其中的每个DOM节点后,将非重复的次级页面的URL添加至URL队列,则能够得到第一页面全部的次级页面,从而便于后续对次级页面进行页面检测或其他操作。
上述获取次级页面的方法,可以应用于对页面进行自动检测的场景中。具体的,服务器在获取到次级页面后,对次级页面进行页面检测,或者,也可以将获取到的次级页面发送给其他装置或设备,由其他装置或设备对页面进行检测。页面检测的内容可以包括对页面上的内容信息进行规范检测,可以包括页面对用户行为分析能力的检测,也可以包括页面异常检测,还可以包括对页面性能指标的检测。
其中,规范检测可以包括对以下内容中的一种或多种进行检测:字体库,文字大小,文字颜色,边框颜色,背景颜色,阴影色,模块间距,模块对齐等。
对用户行为分析能力的检测可以指,检测页面是否具备对用户行为进行分析、上报的能力,如,是否对用户行为进行监听,是否留有监听上报接口等。
页面异常检测可以包括对以下内容中的一种或多种进行检测:页面元素属性,页面文字,页面布局,javascript执行异常,请求接口异常,超链接失效,框架版本等。
页面性能指标检测可以包括对以下内容中的一种或多种进行检测:首次页面内容渲染(first contentful paint,FCP)、首次有意义渲染(first meaningful paint,FMP)、最大内容渲染(largest contentful paint,LCP)、可交互时间(time to interactive,TTI)、页面加载速度(SI)、总体阻塞时间(total blocking time,TBT)等页面性能指标。
例如,在图8所示的示例中,服务器获取应用第一页面URL,第一页面即当前需要进行页面规范检测的页面,通过浏览器打开第一页面,然后遍历第一页面上包含的DOM节点,针对每个DOM节点:一方面,通过CDP获取DOM节点的层叠样式表(cascading style sheets,CSS),根据获取到的CSS进行规范检查;另一方面,模拟对DOM节点的点击操作,拦截打开次级页面即第二页面,获取第二页面URL。然后将第二页面作为第一页面,继续进行页面规范检测。上述页面规范检测的过程可以循环进行,直到遍历完所有可抓取到的页面为止。每当抓取到新的页面,会执行页面规范检测的测试用例对新页面进行规范检查,在遍历完所有页面后,最终生成检测报告。
又例如,在图9所示的示例中,服务器获取应用第一页面URL,第一页面即当前需要进行页面检测的页面,通过浏览器打开第一页面,监听对页面内DOM节点的操作,当监听到操作后,监听浏览器是否对用户行为进行上报,并获取上报的参数及次数,根据监听到的操作和浏览器上报的参数及次数,对页面用户行为分析能力进行检测。此外,服务器仍按照前述任一实施例中的方法获取次级页面URL即第二页面URL,然后将第二页面作为第一页面,继续进行页面检测。最终服务器生成检测报告。
可选的,本申请实施例中可以使用无界面(headless)浏览器执行上述获取次级页面的操作。Headless浏览器是一种没有用户界面的浏览器,常用于网页自动化测试、网页自动化爬虫等领域,利用其提供的API,可以自动执行操作指令。由于上述获取次级页面的方法的目的是实现自动化页面爬虫、自动化网页检测,无需用户观看用户界面、通过用户界面进行操作,因此headless浏览器能够满足上述获取次级页面方法的需求。当然,其他类型的浏览器,例如显示用户界面的浏览器,并不妨碍上述方法的执行,因此,也可以采用其他类型的浏览器。
在上述方法中,服务器使用浏览器访问第一页面,获取第一页面上的DOM节点,通过模拟对DOM节点的点击操作,使得浏览器执行访问第一页面的次级页面(即第二页面)的流程,在该过程中,服务器拦截浏览器打开第二页面,并获取第二页面的URL。由于服务器获取次级页面URL的方式不再限制于仅通过扫描第一页面的<a>标签获取次级页面URL,而是通过模拟访问次级页面的方式获取次级页面URL,该方法能够应用于SPA应用的页面中,能够应用于通过完全刷新的方式进入次级页面的场景中,还能够应用于一般的通过新建页面访问次级页面的场景中。对于单页面应用或者通过刷新进入次级页面的应用,避免了仅能够获取到首页信息,而无法获取次级页面信息的问题。进一步的,对于页面的自动检查、自动测试、网页爬虫等场景,能够基于上述方法获取次级页面信息,从而对次级页面进行自动检查、自动测试等,能够提高系统的覆盖率,且不需要针对每个页面进行硬编码,降低了工作量、提高了系统的普适性。
基于相同的技术构思,本申请实施例还提供一种获取次级页面的装置,用于实现上述方法实施例中服务器的功能。装置可以包括执行上述方法实施例中任意一种可能的实现方式的模块/单元;这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
示例性的,该装置可以如图10所示,包括:访问模块1001、模拟模块1002、拦截模块1003以及获取模块1004,进一步的,还可以包括连接模块1005。
具体的,访问模块1001,用于访问第一页面,获取所述第一页面上的文档对象模型DOM节点。
模拟模块1002,用于模拟对所述DOM节点的点击操作;
拦截模块1003,用于拦截打开第二页面,所述第二页面为所述第一页面的次级页面;
获取模块1004,用于获取所述第二页面的统一资源定位器URL。
在一种可能的实现方式中,所述拦截模块1003,具体用于:当所述第一页面为SPA页面时,拦截所述第一页面的路由切换操作,并获取路由的目标URL。
在一种可能的实现方式中,所述拦截模块1003,具体用于:拦截访问第二页面的请求,并获取所述第二页面的URL。
在一种可能的实现方式中,所述拦截模块1003,具体用于:监听目标创建targetcreated事件,若监听到targetcreated事件,关闭新打开的第二页面,并获取所述第二页面的URL。
在一种可能的实现方式中,所述模拟模块1002,具体用于:获取所述DOM节点对应的触发事件;若所述DOM对应的触发事件包括点击事件,模拟对所述DOM节点的点击操作。
在一种可能的实现方式中,所述装置还包括连接模块1005,用于与浏览器建立双向通讯网络通信协议websocket连接;所述访问模块1001在获取所述第一页面上的DOM节点时,具体用于:通过浏览器开发工具协议CDP获取所述第一页面上的DOM节点。
在一种可能的实现方式中,所述装置还包括检测模块,用于:根据所述第二页面的URL,对所述第二页面进行检测。
在一种可能的实现方式中,所述检测模块具体用于:判断所述第二页面的URL是否与已获取到的其他页面的URL重复;若不重复,根据所述URL对第二页面进行页面检测。
在一种可能的实现方式中,所述页面检测,包括对以下内容中的一种或多种进行检测:字体库,文字大小,文字颜色,边框颜色,背景颜色,是否具备对用户行为上报的接口。
其中,访问模块1001、模拟模块1002、拦截模块1003、获取模块1004、连接模块1005,可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以访问模块为例,介绍访问模块的实现方式。类似的,其他模块的实现方式可以参考访问模块的实现方式。
模块作为软件功能单元的一种举例,访问模块可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,访问模块可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,访问模块可以包括至少一个计算设备,如服务器等。或者,决策模块也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。获取模块与决策模块类似,不再赘述。
需要说明的是,在其他实施例中,访问模块可以用于执行上述方法中的其他步骤,模拟模块可以用于执行上述方法中的任意步骤,拦截模块可以用于执行上述方法中的任意步骤,获取模块也可以用于执行上述方法中的任意步骤。访问模块、模拟模块、拦截模块以及获取模块负责实现的步骤可根据需要指定,通过访问模块、模拟模块、拦截模块以及获取模块分别实现所述获取次级页面方法中不同的步骤来实现获取次级页面装置的全部功能。
基于相同的技术构思,本申请实施例还提供一种计算机设备,用于实现上述方法实施例中服务器的功能。该计算机设备包括如图11所示的处理器1101,以及与处理器1101连接的存储器1102。进一步的,该计算机设备还可以包括通信接口1103以及通信总线1104。
处理器1101可以是通用处理器,微处理器,特定集成电路(application specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件,分立门或者晶体管逻辑器件,或一个或多个用于控制本申请方案程序执行的集成电路等。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
通信接口1103,用于与其他设备通信,如PCI总线接口、以太网,无线局域网(wireless local area networks,WLAN),无线接入网(radio access network,RAN)等。
在本申请实施例中,处理器1101用于调用通信接口1103执行接收和/或发送的功能,并执行如前任一种可能实现方式所述的方法。
进一步的,该计算机设备还可以包括存储器1102以及通信总线1104。
存储器1102,用于存储程序指令和/或数据,以使处理器1101调用存储器1102中存储的指令和/或数据,实现处理器1101的上述功能。存储器1102可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1102可以是独立存在,例如片外存储器,通过通信总线1104与处理器1101相连接。存储器1102也可以和处理器1101集成在一起。
通信总线1104可包括一通路,用于在上述组件之间传送信息。
示例性的,处理器1101可以通过通信接口1103执行以下步骤:访问第一页面,获取所述第一页面上的文档对象模型DOM节点;模拟对所述DOM节点的点击操作;拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,所述第二页面为所述第一页面的次级页面。
在一种可能的实现方式中,处理器1101在拦截打开第二页面,并获取所述第二页面的统一资源定位器URL时,具体用于:当所述第一页面为SPA页面时,拦截所述第一页面的路由切换操作,并获取路由的目标URL。
在一种可能的实现方式中,处理器1101在拦截打开第二页面,并获取所述第二页面的统一资源定位器URL时,具体用于:拦截访问第二页面的请求,并获取所述第二页面的URL。
在一种可能的实现方式中,处理器1101在拦截打开第二页面,并获取所述第二页面的统一资源定位器URL时,具体用于:监听目标创建targetcreated事件,若监听到targetcreated事件,关闭新打开的第二页面,并获取所述第二页面的URL。
在一种可能的实现方式中,处理器1101在模拟对所述DOM节点的点击操作时,具体用于:获取所述DOM节点对应的触发事件;若所述DOM对应的触发事件包括点击事件,模拟对所述DOM节点的点击操作。
在一种可能的实现方式中,处理器1101还用于:与浏览器建立双向通讯网络通信协议websocket连接;处理器1101在获取所述第一页面上的DOM节点时,具体用于:通过浏览器开发工具协议CDP获取所述第一页面上的DOM节点。
在一种可能的实现方式中,处理器1101在获取所述第二页面的URL之后,还用于:根据所述第二页面的URL,对所述第二页面进行检测。
在一种可能的实现方式中,处理器1101在根据所述第二页面的URL,对所述第二页面进行检测时,具体用于:判断所述第二页面的URL是否与已获取到的其他页面的URL重复;若不重复,根据所述URL对第二页面进行页面检测。
在一种可能的实现方式中,所述页面检测,包括对以下内容中的一种或多种进行检测:字体库,文字大小,文字颜色,边框颜色,背景颜色,是否具备对用户行为上报的接口。
本申请实施例还提供一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行前述方法实施例。上述计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
在一些可能的实现方式中,上述计算设备集群中的一个或多个计算设备的存储器中也可以分别存有用于执行获取次级页面方法的部分指令。换言之,一个或多个计算设备的组合可以共同执行用于执行获取次级页面方法的指令。
需要说明的是,计算设备集群中的不同的计算设备中的存储器可以存储不同的指令,分别用于执行获取次级页面装置的部分功能。也即,不同的计算设备中的存储器存储的指令可以实现访问模块、模拟模块、拦截模块以及获取模块中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。
基于相同的技术构思,本申请实施例还提供一种包含指令的计算机程序产品,当所述指令被计算设备集群运行时,使得所述计算设备集群执行上述方法实施例。
基于相同的技术构思,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可读指令,当所述计算机可读指令在计算机上运行时,使得上述方法实施例被执行。
基于相同的技术构思,本申请实施例提供还一种包含指令的计算机程序产品,当其在计算机上运行时,使得上述方法实施例被执行。
需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (21)
1.一种获取次级页面的方法,其特征在于,所述方法包括:
访问第一页面,获取所述第一页面上的文档对象模型DOM节点;
模拟对所述DOM节点的点击操作;
拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,所述第二页面为所述第一页面的次级页面。
2.根据权利要求1所述的方法,其特征在于,所述拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,包括:
当所述第一页面为SPA页面时,拦截所述第一页面的路由切换操作,并获取路由的目标URL。
3.根据权利要求1所述的方法,其特征在于,所述拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,包括:
拦截访问第二页面的请求,并获取所述第二页面的URL。
4.根据权利要求1所述的方法,其特征在于,所述拦截打开第二页面,并获取所述第二页面的统一资源定位器URL,包括:
监听目标创建targetcreated事件,若监听到targetcreated事件,关闭新打开的第二页面,并获取所述第二页面的URL。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述模拟对所述DOM节点的点击操作,包括:
获取所述DOM节点对应的触发事件;
若所述DOM对应的触发事件包括点击事件,模拟对所述DOM节点的点击操作。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
与浏览器建立双向通讯网络通信协议websocket连接;
所述获取所述第一页面上的DOM节点,包括:
通过浏览器开发工具协议CDP获取所述第一页面上的DOM节点。
7.根据权利要求1-6任一项所述的方法,其特征在于,在获取所述第二页面的URL之后,所述方法还包括:
根据所述第二页面的URL,对所述第二页面进行检测。
8.根据权利要求7任一项所述的方法,其特征在于,所述根据所述第二页面的URL,对所述第二页面进行检测,包括:
判断所述第二页面的URL是否与已获取到的其他页面的URL重复;
若不重复,根据所述URL对第二页面进行页面检测。
9.根据权利要求7或8所述的方法,其特征在于,所述页面检测,包括以下一种或多种检测:页面规范检测,用户行为分析能力检测,页面异常页检测,页面性能检测。
10.一种获取次级页面的装置,其特征在于,包括:
访问模块,用于访问第一页面,获取所述第一页面上的文档对象模型DOM节点;
模拟模块,用于模拟对所述DOM节点的点击操作;
拦截模块,用于拦截打开第二页面,所述第二页面为所述第一页面的次级页面;
获取模块,用于获取所述第二页面的统一资源定位器URL。
11.根据权利要求10所述的装置,其特征在于,所述拦截模块,具体用于:
当所述第一页面为SPA页面时,拦截所述第一页面的路由切换操作,并获取路由的目标URL。
12.根据权利要求10所述的装置,其特征在于,所述拦截模块,具体用于:
拦截访问第二页面的请求,并获取所述第二页面的URL。
13.根据权利要求10所述的装置,其特征在于,所述拦截模块,具体用于:
监听目标创建targetcreated事件,若监听到targetcreated事件,关闭新打开的第二页面,并获取所述第二页面的URL。
14.根据权利要求10-13任一项所述的装置,其特征在于,所述模拟模块,具体用于:
获取所述DOM节点对应的触发事件;
若所述DOM对应的触发事件包括点击事件,模拟对所述DOM节点的点击操作。
15.根据权利要求10-14任一项所述的装置,其特征在于,所述装置还包括连接模块,用于与浏览器建立双向通讯网络通信协议websocket连接;
所述访问模块在获取所述第一页面上的DOM节点时,具体用于:
通过浏览器开发工具协议CDP获取所述第一页面上的DOM节点。
16.根据权利要求10-15任一项所述的装置,其特征在于,所述装置还包括检测模块,用于:
根据所述第二页面的URL,对所述第二页面进行检测。
17.根据权利要求16任一项所述的装置,其特征在于,所述检测模块具体用于:
判断所述第二页面的URL是否与已获取到的其他页面的URL重复;
若不重复,根据所述URL对第二页面进行页面检测。
18.根据权利要求16或17所述的装置,其特征在于,所述页面检测,包括以下一种或多种检测:页面规范检测,用户行为分析能力检测,页面异常页检测,页面性能检测。
19.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器存储有计算机程序;
所述处理器用于调用所述存储器中存储的计算机程序,以执行权利要求1-9任一项所述的方法。
20.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1-9任一项所述的方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211071324.5A CN117668396A (zh) | 2022-08-31 | 2022-08-31 | 一种获取次级页面的方法、装置及计算机设备 |
PCT/CN2023/108937 WO2024045954A1 (zh) | 2022-08-31 | 2023-07-24 | 一种获取次级页面的方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211071324.5A CN117668396A (zh) | 2022-08-31 | 2022-08-31 | 一种获取次级页面的方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117668396A true CN117668396A (zh) | 2024-03-08 |
Family
ID=90073972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211071324.5A Pending CN117668396A (zh) | 2022-08-31 | 2022-08-31 | 一种获取次级页面的方法、装置及计算机设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117668396A (zh) |
WO (1) | WO2024045954A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408204A (zh) * | 2014-12-18 | 2015-03-11 | 北京国双科技有限公司 | 网页页面链接地址的获取方法和装置 |
CN106649567A (zh) * | 2016-11-15 | 2017-05-10 | 杭州安恒信息技术有限公司 | 一种基于浏览器内核的网络爬虫系统 |
CN110083755A (zh) * | 2019-04-29 | 2019-08-02 | 北京脉冲星科技有限公司 | 一种高仿真解析网页方法、装置和电子设备 |
CN113159807B (zh) * | 2020-01-07 | 2023-10-13 | 百度在线网络技术(北京)有限公司 | 落地页处理方法、装置、设备和介质 |
CN114745146B (zh) * | 2021-01-07 | 2023-07-14 | 腾讯科技(深圳)有限公司 | 跳转拦截方法、装置、可读存储介质及设备 |
-
2022
- 2022-08-31 CN CN202211071324.5A patent/CN117668396A/zh active Pending
-
2023
- 2023-07-24 WO PCT/CN2023/108937 patent/WO2024045954A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024045954A1 (zh) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169206B2 (en) | Simultaneous multi-platform testing | |
US7231606B2 (en) | Method and system for testing websites | |
US9003235B2 (en) | Indicating coverage of web application testing | |
JP5511845B2 (ja) | マークアップ言語を通してクライアント・ブラウザ状態のサーバ側ロギングを遂行するための方法 | |
US10534512B2 (en) | System and method for identifying web elements present on a web-page | |
US20190340512A1 (en) | Analytics for an automated application testing platform | |
Alalfi et al. | Modelling methods for web application verification and testing: state of the art | |
CN111061526A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
KR20120115170A (ko) | Jvm 및 크로스-jvm 호출 스택들의 시각화 | |
US20110161395A1 (en) | Synthetic transaction monitoring and management of scripts | |
CN107526676B (zh) | 一种跨系统测试方法及装置 | |
CN110750458A (zh) | 大数据平台测试方法、装置、可读存储介质及电子设备 | |
Vos et al. | testar–scriptless testing through graphical user interface | |
US10459830B2 (en) | Executable code abnormality detection | |
US20220350857A1 (en) | Methods and systems for browser extension used to generate relative xpath, absolute xpath and/or css selectors | |
US10365995B2 (en) | Composing future application tests including test action data | |
Amalfitano et al. | The DynaRIA tool for the comprehension of Ajax web applications by dynamic analysis | |
Hallé et al. | Testing web applications through layout constraints | |
US10706108B2 (en) | Field name recommendation | |
CN113282971A (zh) | 测试日志的处理方法、装置、设备及存储介质 | |
CN115514677B (zh) | 服务器拨测方法及系统 | |
CN110691005A (zh) | 一种网站监测系统及方法 | |
CN117668396A (zh) | 一种获取次级页面的方法、装置及计算机设备 | |
Rahmel et al. | Testing a site with ApacheBench, JMeter, and Selenium | |
Li et al. | Modeling web application for cross-browser compatibility testing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |