CN117112034A - 驱动控制方法、装置、电子设备及计算机存储介质 - Google Patents

驱动控制方法、装置、电子设备及计算机存储介质 Download PDF

Info

Publication number
CN117112034A
CN117112034A CN202210541720.3A CN202210541720A CN117112034A CN 117112034 A CN117112034 A CN 117112034A CN 202210541720 A CN202210541720 A CN 202210541720A CN 117112034 A CN117112034 A CN 117112034A
Authority
CN
China
Prior art keywords
driving
image
instruction
operating system
file
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
Application number
CN202210541720.3A
Other languages
English (en)
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.)
Tencent Cyber Tianjin Co Ltd
Original Assignee
Tencent Cyber Tianjin 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 Tencent Cyber Tianjin Co Ltd filed Critical Tencent Cyber Tianjin Co Ltd
Priority to CN202210541720.3A priority Critical patent/CN117112034A/zh
Publication of CN117112034A publication Critical patent/CN117112034A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

本申请实施例提供了一种驱动控制方法、装置、电子设备及计算机存储介质,涉及计算机及网络技术、人工智能、计算机视觉领域。该方法包括:测试设备在检测到驱动设备连接有第一设备时,确定第一设备的操作系统的类型;基于第一设备的操作系统的类型,采用与第一设备的操作系统的类型相匹配的第一调试桥与第一设备建立通讯连接,可以实现基于同一驱动设备,与不同类型的操作系统对应的待驱动设备建立通信连接。并通过第一调试桥向第一设备发送所获取的驱动指令,以驱动第一设备执行驱动指令,实现了对不同类型的操作系统对应的待驱动设备的驱动控制操作。

Description

驱动控制方法、装置、电子设备及计算机存储介质
技术领域
本申请涉及计算机及网络技术、人工智能以及计算机视觉技术领域,具体而言,本申请涉及一种驱动控制方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
随着计算机行业的不断发展,出现了越来越多不同类型的操作系统,例如Windows、Android(安卓)、iOS、switch和Xbox等,越来越多的功能可以适用于不同类型的操作系统,通常在不同类型的操作系统应用需要实现的功能模块之前,会对驱动各不同类型的操作系统实现相应的功能,通过驱动控制结果,进一步确定在不同类型的操作系统应用需要实现的功能模块。
现有的驱动工具通常只能实现对Android(安卓)操作系统的设备进行自动化驱动,对于其他类型的操作系统的设备需要通过人工的方式进行驱动。由于通过自动化驱动和通过人工的方式进行驱动的评判标准存在差异,会导致即使对不同类型的操作系统的设备的驱动操作相同,所得到的驱动结果会存在差异。另外,在通过人工的方式进行驱动时,需要大量的人力成本,实用性较差,也可能会由于精神疲劳导致错误的产生和盲点,对驱动人员的依赖性较强。
发明内容
本申请实施例提供了一种驱动控制方法、装置、电子设备、计算机可读存储介质及计算机程序产品,可以实现对不同类型的操作系统的设备进行驱动控制操作。
根据本申请实施例的一个方面,提供了一种驱动控制方法,该方法通过驱动设备执行,包括:
在检测到驱动设备连接有第一设备时,确定第一设备的操作系统的类型;
基于第一设备的操作系统的类型,采用与第一设备的操作系统的类型相匹配的第一调试桥与第一设备建立通讯连接;
获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令。
根据本申请实施例提供的另一个方面,提供了一种驱动控制装置,该装置应用于驱动设备中,包括:
类型确定模块,用于在检测到驱动设备连接有第一设备时,确定第一设备的操作系统的类型;
通讯连接模块,用于基于第一设备的操作系统的类型,采用与第一设备的操作系统的类型相匹配的第一调试桥与第一设备建立通讯连接;
驱动模块,用于获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令。
根据本申请实施例的又一个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行计算机程序以实现上述方法的步骤。
根据本申请实施例的又一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
根据本申请实施例的又一个方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
通过本申请实施例提供的驱动控制方法,在检测到驱动设备连接有待驱动设备(第一设备)时,通过确定待驱动设备的操作系统的类型,并基于所确定的待驱动设备的操作系统的类型,采用与待驱动设备的操作系统的类型相匹配的调试桥,与待驱动设备建立通讯连接,可以实现基于同一驱动设备,与不同类型的操作系统对应的待驱动设备建立通信连接。
进一步地,由于在通过与不同类型的操作系统匹配的调试桥对相应的待驱动设备发送驱动指令时,驱动指令与当前的调试桥、第一设备都是相匹配的,即最终发送给待驱动设备的驱动指令必然是可以驱动待驱动设备直接执行的,从而在待驱动设备执行驱动指令的过程中,实现了对待驱动设备的驱动控制操作,且无论当前的驱动设备的操作系统是何种类型,都可以对当前的待驱动设备进行自动化驱动,降低了对驱动人员的依赖性,避免了在生成驱动指令的电子设备的操作系统的类型与当前的待驱动设备的操作系统的类型不同时,无法通过驱动指令对当前的待驱动设备进行驱动控制操作。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1示出了本申请实施例提供的一种驱动控制系统的框架图;
图2示出了本申请实施例提供的一种驱动设备的结构示意图;
图3示出了本申请实施例提供的一种实施环境的示意图;
图4示出了本申请实施例提供的一种生成驱动文件的过程的流程图;
图5示出了本申请实施例提供的一种通信连接关系的示意图;
图6示出了本申请实施例提供的一种测试设备的用户界面的示意图;
图7示出了本申请实施例提供的另一种实施环境的示意图;
图8示出了本申请实施例提供的一种测试设备的又一用户界面的示意图;
图9示出了本申请实施例提供的对第一图像的所执行的操作的提示信息的示意图;
图10示出了本申请实施例提供的一种测试设备的又一用户界面的示意图;
图11示出了本申请实施例提供的一种测试设备的又一用户界面的示意图;
图12示出了本申请实施例提供的一种对测试用例进行保存的示意图;
图13示出了本申请实施例提供的一种执行驱动文件的过程的流程图;
图14示出了本申请实施例提供的又一种实施环境的示意图;
图15a示出了本申请实施例提供的又一种测试设备的用户界面的示意图;
图15b示出了本申请实施例提供的又一种测试设备的用户界面的示意图;
图15c示出了本申请实施例提供的又一种测试设备的用户界面的示意图;
图15d示出了本申请实施例提供的又一种测试设备的用户界面的示意图;
图16为本申请实施例提供的一种驱动控制方法的流程图;
图17示出了本申请实施例中提供的一种驱动控制装置的示意图;
图18示出了本申请实施例所适用的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
为了更好的理解和说明本申请实施例提供的方案,下面对本申请涉及的术语及相关技术进行的说明:
adb(Android Debug Bridge):Android(安卓,一种操作系统)调试桥,用于PC(personal computer,个人电脑)与基于Android系统的设备(以下简称Android设备)进行通信。
idb(iOS Debug Bridge):基于pymobiledevice库实现的iOS(一种操作系统)调试桥,用于PC与基于iOS系统的设备(以下简称iOS设备)进行通信。其中,pymobiledevice库表示对libimobiledevice的Python绑定的库,libimobiledevice表示与iOS设备进行通信的跨平台协议库,不依赖于使用任何现有的专有库。它允许其他软件轻松访问iOS设备的文件系统,检索有关设备及其内部设备的信息,备份/恢复设备,管理跳板图标,管理已安装的应用程序,检索地址簿/日历/笔记和书签,以及同步音乐和视频到iOS设备。
TM(target manager,目标管理器):GUI(Graphical User Interface,图形用户界面)应用程序,可以用于管理连接到PC的switch硬件。
OpenCV(Open Source Computer Vision Library,开源计算机视觉库):一种用于图像处理、模式识别的计算机视觉库。
OCR(Optical Character Recognition,光学字符识别):一种用于图像分析识别处理,获取文本信息的方法。
SDK(Software Development Kit,软件开发工具包):一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
图1示出了本申请实施例提供的一种驱动控制系统的框架图。本申请实施例中所涉及的驱动设备均适用于图1所示的驱动控制系统。该驱动控制系统可以应用于对任一设备的驱动控制过程中,例如,可以通过驱动某一电子设备实现对该电子设备中的应用程序进行测试,具体可以为对该电子设备中未上线的应用程序在不同的操作系统中进行上线测试、或者对该电子设备中已上线的应用程序的部分功能进行升级测试、或者对该电子设备中已上线的应用程序的部分存在缺陷的功能进行修复测试等过程中,在通过该驱动控制系统对该电子设备中的应用程序的测试结果为测试通过之后,可以方便针对该电子设备的使用者更好地使用该应用程序。
如图1所示,该驱动控制系统100包括驱动设备101、第一设备102和第二设备103,该驱动设备101分别与第一设备102和第二设备103通信连接,通过该驱动设备101可以对待驱动设备(包括第一设备102和第二设备103,在本申请实施例中将第一设备102和第二设备103统称为待驱动设备)进行驱动控制。其中,第一设备102的操作系统的类型为第一类型,以下可以将“第一设备102的操作系统”简称为“第一操作系统”,第二设备103的操作系统的类型为第二类型,以下可以将“第二设备103的操作系统”简称为“第二操作系统”。
对于第一操作系统和第二操作系统而言,二者可以是任一类型的操作系统,可以包括但不限于Android操作系统、iOS操作系统、switch操作系统、Windows操作系统、Xbox操作系统等操作系统中的任一类型的操作系统,本申请实施例对此不做限制,对应地,基于各类型的操作系统实现的设备可以称为相应的设备,即本申请实施例中的待驱动设备的具体设备名称的统称。例如,对于基于Android系统实现的设备可以称为Android设备,对于基于Windows系统实现的设备可以称为PC设备等。如图1所示,第二设备103即图1实线框中的任一设备,第一设备102即图1虚线框中基于不同于第二设备103的操作系统任一操作系统实现的至少一个设备。
在本申请实施例中,可以通过一份驱动文件对基于不同类型的操作系统实现的设备进行驱动控制,不必基于不同类型的操作系统分别生成不同的驱动文件,基于每种类型的操作系统对应的驱动文件对基于该类型的操作系统实现的设备进行驱动控制,减少了在生成多份驱动文件时所需的人力成本和其他数据处理成本。其中,驱动文件可以为任一格式的文件,例如,驱动文件的格式可以为Python(一种计算机编程语言)格式。
在具体实施过程中,可以通过该驱动设备101与一个第二设备103的交互过程生成驱动文件,通过该驱动设备101在与多个第一设备102的交互过程中执行所生成的驱动文件,实现对多个第一设备102的驱动控制。
在本申请实施例中,待驱动设备可以通过有线或无线的方式与驱动设备101进行连接,本申请实施例对此不做限制。以驱动设备101为PC为例,待驱动设备可以通过该驱动设备101上的USB(Universal Serial Bus,通用串行总线)接口,与该驱动设备101进行连接,也可以通过蓝牙、Wi-Fi(Wireless Fidelity,无线保真)等无线方式与该驱动设备101进行连接。在启动该驱动设备101之后,可以通过该驱动设备101所具备的无线或有线连接的方式,检测该驱动设备101是否连接有待驱动设备,在该驱动设备101连接有待驱动设备的情况下,可以根据本申请实施例提供的驱动控制方法对与该驱动设备101连接的待驱动设备进行驱动控制。
在本申请实施例中,在确定驱动设备101连接有待驱动设备的情况下,可以进一步确定待驱动设备的操作系统的类型,从而可以基于待驱动设备的操作系统的类型,选择与待驱动设备的操作系统的类型对应的设备调试桥(即“调试桥”),以使得驱动设备101可以通过待驱动设备的操作系统的类型对应的设备调试桥向待驱动设备发送相应的驱动指令,实现对待驱动设备的驱动控制。其中,设备调试桥包括但不限于adb、idb和TM等,可以根据实际情况确定。
例如,在待驱动设备为Android设备时,可以通过adb建立驱动设备101与待驱动设备之间的通信连接。在待驱动设备为iOS设备时,可以通过idb建立驱动设备与待驱动设备之间的通信连接。在待驱动设备为switch游戏设备时,可以通过TM建立驱动设备101与待驱动设备之间的通信连接。
其中,第一设备102也可以称为第一终端,第二设备103也可以称为第二终端。无论是驱动设备101、还是第一设备102、第二设备103,在本申请实施例中,终端(也可以称为用户终端或用户设备(User Equipment,UE))可以是智能手机、平板电脑、笔记本电脑、台式计算机(例如,PC(Personal Computer,个人计算机))、智能语音交互设备(例如智能音箱)、可穿戴电子设备(例如智能手表)、车载终端、智能家电(例如智能电视)、AR(AugmentedReality,增强现实)/VR(Virtual Reality,虚拟现实)设备等,本申请实施例对此不做限制。
在通过该驱动控制系统100执行本申请实施例提供的驱动控制方法时,可以基于云技术(Cloud technology)实现。云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请实施例提供的驱动控制方法,还可以涉及以下人工智能技术、计算机视觉技术等。例如示例性的,可利用计算机视觉技术的图像处理、视频处理等技术实现在驱动设备的用户界面中显示游戏画面、对第一图像和第二图像进行识别等,利用人工智能技术对于第一图像和第二图像进行特征匹配等。
人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
计算机视觉技术是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D(3-dimension,三维)技术、虚拟现实、增强现实、同步定位与地图构建、自动驾驶、智慧交通等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
需要说明的是,在本申请的可选实施例中,所涉及到的相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。也就是说,本申请实施例中如果涉及到与对象有关的数据,这些数据需要经由对象授权同意、且符合国家和地区的相关法律法规和标准的情况下获取的。
为了更清楚地对本申请实施例提出的驱动控制系统进行说明,以下结合图2和图3对该驱动控制系统进行说明。图2示出了本申请实施例提供的一种驱动设备的结构示意图。如图2所示,可以从物理结构上将该驱动设备划分为驱动应用模块、虚拟设备模块和物理实现模块(对应地,在本申请实施例提供的驱动控制方法通过驱动程序实现时,可以从软件架构上将该驱动设备划分为三层,分别为测试应用层、虚拟设备层和物理实现层)。通过该驱动设备对应的显示组件可以显示该驱动设备在驱动控制过程中的用户界面(即UI,UserInterface)。
通过该驱动设备生成驱动文件的过程和执行驱动文件的过程实现对待驱动设备的驱动控制,在该驱动设备的用户界面上可以显示有生成驱动文件控件和执行驱动文件控件,该确定设备可以在基于驱动设备的用户界面获取到驱动对象(对该驱动设备进行控制的对象)对该生成驱动文件控件的触发操作之后,执行驱动文件的生成操作。执行驱动文件控件在接收到第一设备发送的驱动控制请求之后,执行驱动文件的执行操作。
以下结合该驱动设备的不同模块对该驱动设备进行说明。具体地:
驱动应用模块包括生成驱动文件单元和执行驱动文件单元。生成驱动文件单元和执行驱动文件单元可以分别对应于该驱动设备的用户界面上展示的生成驱动文件控件与执行驱动文件控件。生成驱动文件单元用于检测驱动对象是否对生成驱动文件控件进行了触发操作。执行驱动文件单元用于检测是否接收到第一设备发送的驱动控制请求。
在本申请实施例中,在生成驱动文件的过程中,可以通过将第二设备的用户界面内容(即用户界面中显示的内容)投影至驱动设备上的用户界面之后,基于对驱动设备上的用户界面内容进行操作,从而生成驱动文件的,该过程类似于进行屏幕录制的过程,因此,生成驱动文件单元也可以称为录制单元,对应地,生成驱动文件控件也可以称为录制控件,生成驱动文件的过程也可以称为录制过程,生成驱动文件操作也可以称为录制操作。
在执行驱动文件(基于驱动文件进行驱动控制)的过程中,可以通过执行驱动文件,显示驱动文件对应的用户界面内容,而驱动文件可以是基于第二设备的用户界面内容生成的,该过程可以类似于对已录制的内容进行回放的过程,因此,执行驱动文件单元也可以称为回放单元,对应地,执行驱动文件控件可以称为回放控件,执行驱动文件过程也可以称为回放过程,执行驱动文件操作也可以称为回放操作。
虚拟设备模块是为不同类型的操作系统的设备提供统一控制的上层模块,可以进一步包括虚拟事件单元和虚拟投影单元。
虚拟事件单元用于检测驱动设备是否连接有待驱动设备,并且在该驱动设备连接有待驱动设备的情况下,根据该驱动设备所连接的待驱动设备(包括第一设备或第二设备)的例如设备类型以及设备标识ID等,确定待驱动设备的操作系统的类型,并根据待确定设备的操作系统的类型,选择与待确定设备的操作系统的类型对应的设备调试桥,并通过对应的设备调试桥建立驱动设备与待驱动设备的通信连接,以及对驱动设备的用户界面上显示的用户界面内容进行检测。
示例性地,在生成驱动文件单元生成驱动文件的过程中,在虚拟事件单元已通过对应的设备调试桥建立驱动设备与待驱动设备的通信连接之后,若虚拟事件单元检测到驱动设备的当前用户界面内容中存在任一目标事件,可以根据检测到的目标事件对应的预设操作,生成与待驱动设备的操作系统的类型对应的驱动指令,并将该驱动指令发送至物理实现模块的设备操作单元,以通过设备操作单元对待驱动设备进行驱动控制。在执行驱动文件的过程中,若虚拟事件单元检测到驱动设备的当前用户界面内容中存在任一目标事件,将驱动文件中的各驱动指令转换为与待驱动设备的操作系统的类型对应的驱动指令,并将该驱动指令发送至物理实现模块的设备操作单元,以通过设备操作单元对待驱动设备进行驱动控制。
虚拟投影单元(也可以称为屏幕投影单元)用于与生成驱动文件单元、执行驱动文件单元以及虚拟事件单元相结合,通过驱动设备的用户界面显示不同的用户界面内容。
示例性地,在生成驱动文件单元生成驱动文件的过程中,在虚拟事件单元已通过对应的设备调试桥建立驱动设备与待驱动设备的通信连接之后,虚拟投影单元可以从待驱动设备上拉取视频流,并将该视频流投影至该驱动设备的用户界面上。在生成驱动文件单元执行驱动文件的过程中,在虚拟事件单元已通过对应的设备调试桥建立驱动设备与待驱动设备的通信连接之后,虚拟投影单元可以将执行驱动文件的过程所生成的用户界面内容投影在待驱动设备的用户界面上。
在一种可能的实现方式中,还可以通过虚拟设备模块创建与待驱动设备功能完全相同的虚拟设备,由于所创建的虚拟设备与待驱动设备的功能完全相同,基于对虚拟设备的驱动控制过程,即可相当于对待驱动设备的驱动控制过程。在可以成功对虚拟设备进行驱动控制的情况下,再通过待驱动设备执行与驱动控制操作对应的实际操作,可以更有效地保护待驱动设备。
物理实现模块可以包括用于实现驱动控制过程的具体的功能单元,可以基于该物理实现模块中的各个功能单元向待驱动设备发送驱动指令,最终实现对待驱动设备的驱动控制。该物理实现模块可以具体包括设备操作单元(也可以称为底层事件单元、操作绑定单元)、屏幕获取单元、事件输入单元、图像识别单元、文本识别单元等功能单元。
设备操作单元可以用于根据不同的驱动控制需求,对不同类型的操作系统自带的SDK(原生)进行二次开发(即反编译过程),确定出对应于不同类型的操作系统的调整后的驱动指令集,以使得各类型的操作系统的的调整后的操作系统的驱动指令集可以满足不同的驱动控制需求。设备操作单元还可以用于基于虚拟事件单元发送的驱动指令,控制待驱动设备执行与驱动指令对应的驱动控制操作。其中,与驱动指令对应的驱动控制操作包括但不限于minitouch(一种触摸方式)、minicap(一种截图方式)、摇动Joy-Con、截图操作、键盘输入、按键等操作。
屏幕获取单元(也可以称为屏幕截图单元)也可以用于对用户界面内容进行截图操作,除此之外,屏幕获取单元还可以将基于屏幕获取单元或设备操作单元所执行的截图操作之后,得到的第一图像和第二图像存储至预设的存储空间。该预设的存储空间可以为PC的本地存储空间,也可以是云存储空间,本申请实施例对此不做限制。例如,可以存储至temp目录(临时存储目录),也可以存储至任一指定的存储目录下。
事件输入单元用于获取驱动对象对驱动设备的用户界面的输入内容。例如,在获取到第一图像或第二图像之后,可以通过用户界面上所显示的弹窗中的输入框获取驱动对象输入的对第一图像或第二图像的标识(例如,第一图像或第二图像的名称),并将该标识发送至屏幕获取单元,以使屏幕获取单元根据该标识,对相应的图像进行存储。
图像识别单元用于基于分别对应于第二图像和相应的第一图像的图像识别结果确定第二图像和相应的第一图像的匹配结果。文本识别单元用于在第二图像和相应的第一图像中均存在文本的情况下,分别提取第二图像对应的第一文本以及相应的第一图像对应的第二文本,基于第一文本和第二文本确定第二图像和相应的第一图像的匹配结果。
基于上述,该驱动设备可以响应于针对生成驱动文件控件的触发操作,调用虚拟投影单元、虚拟事件单元、屏幕获取单元、设备操作单元、事件输入单元等功能单元生成驱动文件,实现驱动文件生成操作。也可以响应于针对执行驱动文件控件的触发操作,调用虚拟投影单元、设备操作单元、屏幕获取单元、事件输入单元、图像识别单元、文本识别单元等功能单元,执行驱动文件,实现对驱动文件的执行操作。
作为一个示例,图3示出了本申请实施例提供的一种实施环境的示意图。如图3所示,实线部分表示生成驱动文件的过程,虚线部分表示执行驱动文件的过程。结合图2和图3对本申请实施例提出的驱动控制过程进行说明。驱动控制过程可以包括生成驱动文件的过程和执行驱动文件的过程,具体如下:
生成驱动文件的过程可以包括步骤1至步骤5,具体地:
步骤1:在通过生成驱动文件单元检测到驱动对象对生成驱动文件控件的触发操作之后,通过虚拟事件单元检测驱动设备是否连接有待驱动设备。
在通过虚拟事件单元确定驱动设备连接有待驱动设备时,对待驱动设备进行设备识别,并基于待驱动设备的操作系统的类型,确定与待驱动设备的操作系统的类型对应的设备调试桥,并通过该设备调试桥建立待驱动设备与驱动设备的之间通信连接,并向设备操作单元发送针对待驱动设备中的目标应用程序的运行指令。
通过设备操作单元基于待驱动设备的操作系统的类型对应的修改后的驱动指令集,调用驱动指令集中与运行目标应用程序相关的驱动指令,将所获取的驱动指令通过设备调试桥发送至待驱动设备,以驱动待驱动设备通过执行驱动指令,运行目标应用程序。
步骤2:通过虚拟投影单元拉取待驱动设备通过运行目标应用程序所产生的视频流,将拉取到的视频流投影在驱动设备的用户界面上。
步骤3:通过虚拟事件单元对驱动设备的用户界面上的当前用户界面内容进行检测,在虚拟事件单元检测到当前用户界面内容中的事件为需要进行截图操作的目标事件时,生成截图提示信息。并通过屏幕获取单元检测驱动对象所执行的针对当前用户界面内容的目标区域的截图操作,基于该截图操作,得到与截图操作中所选定的目标区域对应的第一图像。
步骤4:虚拟事件单元向设备操作单元基于检测到的目标事件对应的预设操作,生成针对目标应用程序的操作指令,将该操作指令与对应的第一图像的标识,例如,第一图像的名称等)进行关联,并将操作指令发送至设备操作单元。
通过设备操作单元基于待驱动设备的操作系统的类型对应的修改后的驱动指令集,调用驱动指令集中与对目标应用程序执行上述操作的驱动指令,将所获取的驱动指令通过设备调试桥发送至待驱动设备,以驱动待驱动设备通过执行驱动指令,对目标应用程序执行上述操作,实现模拟待驱动设备的使用对象对目标应用程序进行上述操作的目的,达到远程操作待驱动设备的效果。
步骤5:在虚拟事件单元检测到预设的至少一个目标事件中的所有事件之后,通过生成驱动文件单元基于驱动设备所执行的所有操作步骤,生成对应于待驱动设备的操作系统的类型的驱动文件。
执行驱动文件的过程可以包括步骤1’至步骤5’,具体地:
步骤1’:在通过执行驱动文件单元检测到待驱动设备发起的针对目标应用程序的驱动控制请求之后,通过虚拟事件单元检测驱动设备是否连接有待驱动设备。
在通过虚拟事件单元确定驱动设备连接有待驱动设备时,对待驱动设备进行设备识别,并基于待驱动设备的操作系统的类型,确定与待驱动设备的操作系统的类型对应的设备调试桥,并通过该设备调试桥建立待驱动设备与驱动设备之间的通信连接。
步骤2’:在通过执行驱动文件单元执行驱动文件的过程中,通过虚拟事件单元向设备操作单元发送针对待驱动设备中的目标应用程序的运行指令。
通过设备操作单元基于待驱动设备的操作系统的类型对应的修改后的驱动指令集,调用驱动指令集中与运行目标应用程序相关的驱动指令,将所获取的驱动指令通过设备调试桥发送至待驱动设备,以驱动待驱动设备通过执行驱动指令,运行目标应用程序。
以及,通过虚拟投影单元通过设备调试桥将执行驱动文件的过程中所产生的用户界面内容投影至待驱动设备的用户界面上。
步骤3’:在通过执行驱动文件单元执行驱动文件的过程中,在虚拟事件单元检测到执行驱动文件单元执行至关联有第一图像的驱动指令时,生成截图命令,并将截图命令发送至设备操作单元。
设备操作单元基于待驱动设备的操作系统的类型对应的修改后的驱动指令集,调用驱动指令集中与对目标应用程序执行上述操作的驱动指令(在驱动文件对应的待驱动设备的操作系统的类型与当前所连接的待驱动设备的操作系统的类型相同时,所调用的驱动指令即驱动文件中的驱动指令;在驱动文件对应的待驱动设备的操作系统的类型与当前所连接的待驱动设备的操作系统的类型不同时,所调用的驱动指令即将驱动文件中的驱动指令进行转换之后,所得到的与当前所连接的待驱动设备的操作系统的类型对应的驱动指令),将所获取的驱动指令通过设备调试桥发送至待驱动设备,以驱动待驱动设备通过执行驱动指令,对待驱动设备的当前用户界面内容进行截图操作,并通过向屏幕获取单元发送截图命令,使得屏幕获取单元获取待驱动设备的当前用户界面内容进行截图操作所产生的第二图像。
步骤4’:通过图像识别单元和文本识别单元对第二图像和相应的第一图像进行匹配,得到第二图像和相应的第一图像的匹配结果。
具体地,若第二图像和相应的第一图像中的至少一个图像中不存在文本,通过图像识别单元对第二图像进行图像识别,得到第二图像的像素直方图;通过图像识别单元对相应的第一图像进行图像识别,得到相应的第一图像的像素直方图。在通过图像识别单元确定第二图像的像素直方图和相应的第一图像的像素直方图相匹配时,确定第二图像与相应的第一图像相匹配。
若第二图像和相应的第一图像中均存在文本,通过文本识别单元对第二图像进行文本提取,得到第一文本;通过文本识别单元对相应的第一图像进行文本提取,得到第二文本;在通过图像识别单元确定第二图像的像素直方图和相应的第一图像的像素直方图相匹配,且通过文本识别单元确定第一文本和第二文本相匹配时,确定第二图像与相应的第一图像相匹配。
步骤5’:在匹配结果为该第二图像和相应的第一图像相匹配的情况下,通过虚拟事件单元向设备操作单元发送与该关联有第一图像的驱动指令中的预设操作对应的操作指令,直至执行完驱动文件,得到对待驱动设备中的目标应用程序的驱动控制结果,并将驱动控制结果通过设备调试桥反馈至待驱动设备。
在该实现方式中,若在通过执行驱动文件单元执行驱动文件的过程中,虚拟事件单元检测到执行驱动文件单元执行至未关联有第一图像的驱动指令时,则可以直接通过虚拟事件单元向设备操作单元发送与该关联有第一图像的驱动指令中的预设操作对应的操作指令。
其中,若驱动文件中所涉及的所有的图像匹配结果均为相匹配,且可以成功执行驱动文件,驱动控制结果为可以成功对待驱动设备进行驱动控制,否则,驱动控制结果为不能成功对待驱动设备进行驱动控制,需要执行针对驱动文件的修复操作,或者对目标应用程序对应的程序进行修改操作等修正操作。
在本申请实施例中,在通过驱动控制系统对待测试的应用程序(以下简称为“待测试应用”)进行测试时,可以将驱动控制系统称为测试系统,将驱动设备称为测试设备,将待驱动设备称为待测试设备(对应地,第一设备即第一待测试设备,第二设备即第二待测试设备),将驱动对象称为测试对象,将用于驱动待测试应用的驱动文件可以称为测试用例,驱动文件中的驱动指令可以称为测试指令。
待测试应用可以为任一应用程序,包括但不限于游戏类应用程序、购物类应用程序、音视频应用程序等,本申请实施例对此不做限制,可以根据实际情况确定。待测试应用可以是任一独立的应用程序,也可以是一个应用程序插件,例如,以小程序的形式实现该待测试应用等,本申请实施例对此也不做限制。
以待测试应用为游戏应用为例,该游戏应用的实现方式本申请实施例不做限定,可以是需要下载安装的游戏应用,也可以是云游戏应用,还可以是小程序中的游戏应用。具体的游戏类型可以包括但不限于动作类、冒险类、模拟类、角色扮演类、休闲类等类型的游戏。
以下以通过测试设备上一个测试类应用程序DevMenu Application(以下简称APP1)实现本申请实施例提供的驱动控制方法,待测试应用为游戏应用(对应地,待测试设备即游戏设备),第一待测试设备的数量为1个,第二待测试设备的数量为1个,第一待测试设备为switch游戏设备,第二待测试设备为Android游戏设备为例,通过测试设备对第一待测试设备和第二待测试设备中的待测试应用进行测试为例对本申请实施例提供的驱动控制方法进行说明。在具体执行驱动控制方法之前,可以通过设备操作单元将不同类型的操作系统对应的SDK进行二次开发,得到与不同类型操作系统以及该游戏应用相关的测试指令集。
图4示出了本申请实施例提供的一种生成驱动文件的过程的流程图。图5示出了本申请实施例提供的一种通信连接关系的示意图。如图4所示,该生成驱动文件的过程主要包括:
步骤S401:生成驱动文件单元响应于测试对象对录制控件的触发操作,开始进行录制过程。
步骤S402:设备操作单元检测该测试设备是否连接有游戏设备。若检测到该测试设备连接有游戏设备,执行步骤S403。若检测到该测试设备没有连接游戏设备,执行步骤S410。
步骤S403:虚拟事件单元基于与测试设备连接的游戏设备的操作系统的类型switch游戏设备,创建该测试设备与该switch游戏设备之间的设备调试桥TM,并通过该TM向switch游戏设备发送待测试应用的运行指令,以使得switch游戏设备通过执行该运行指令,在switch游戏设备中运行该待测试应用。
如图5所示,该测试设备上的测试类应用程序为DevMenu Application(即APP1),switch游戏设备的设备型号(Target Name)为XAL03100042550,该测试设备与switch游戏设备通过Target Manager设备调试桥进行连接,连接状态(status)为已连接(Connected)。
步骤S404:虚拟投影单元利用QWebEngineView创建一个QWebChannel对象,并通过webview通道加载switch游戏设备的用户界面内容对应的html文件,实现将switch游戏设备中运行的游戏内容投影至测试设备的用户界面上。
图6示出了本申请实施例提供的一种测试设备的用户界面的示意图。如图6所示,在测试设备的用户界面中显示有区域1、区域2、对区域1进行操作的控件、对区域2进行操作的控件以及与测试设备连接的待测试设备的相关信息。如图6所示,可以在测试设备的用户界面上的区域1显示投影内容(即,对switch游戏设备中运行的游戏内容进行投影得到的画面)。对区域1进行操作的控件可以包括但不限于对图6中所示的“录制操作”控件、“截图”操作控件。可以在区域2显示基于对该测试设备的当前用户界面内容进行检测的检测结果所执行的进一步操作,所形成的html文件,可以通过区域2的显示内容对该html文件进行预览。对区域2进行操作的控件可以包括但不限于“新建”控件、“打开”控件和“保存”控件。如图6所示,与测试设备连接的待测试设备的相关信息可以为与测试设备连接的待测试设备的标识“switch(XAL03100042550)”。
步骤S405:虚拟事件单元对该测试设备的当前用户界面内容进行检测,并确定是否需要对当前用户界面内容进行截图操作。如图7所示,在虚拟事件单元检测到当前用户界面内容中事件为battle(对战)场景(对应的预设操作为对“按钮A”控件进行点击操作,以控制当前switch游戏设备所对应的英雄a向对战英雄b发起反击操作,且需要对该事件对应的游戏内容进行截图)的情况下,生成对当前用户界面内容进行截图操作的提示信息,并将该提示信息发送给屏幕获取单元,以使得屏幕获取单元执行步骤S406。以及生成对“按钮A”控件进行点击操作的第一测试命令,并将该第一测试指令发送给设备操作单元,以使设备操作单元执行步骤S407。
步骤S406:屏幕获取单元在获取到提示信息后,响应于测试对象对图6中右上角的“截图”控件的点击操作,通过屏幕投影单元在当前用户界面的目标区域执行选择操作的指示信息,并响应于测试对象对区域1中当前用户界面内容中游戏英雄a与游戏英雄b进行battle的目标区域的选中操作(如图8中对区域1中的目标区域对应的虚线矩形选中框),获取到选中操作对应的第一图像。
步骤S407:虚拟事件单元在获取到对“按钮A”控件进行点击操作的第一测试命令后,在当前用户界面中显示图9所示的需要对第一图像的所执行的操作的提示信息。
响应于测试对象在图9中的命名输入框中输入的内容“按钮A(Button A)”,在当前用户界面中显示图10所示的操作栏。
响应于测试对象对图10所示的操作栏中“按钮A”控件的点击操作,在当前用户界面中显示图11所示的在区域2中显示与battle场景对应的html内容,完成对第一图像和对“按钮A”控件进行点击操作的第一测试命令的关联处理。
步骤S408:继续通过虚拟事件单元对当前用户界面内容进行检测,在步骤S405中通过虚拟事件单元检测到当前用户界面内容中事件为赠送礼物场景(对应的预设操作为点击操作(click))的情况下,生成与点击操作对应的第一测试指令,并将该第一测试指令发送给设备操作单元,以使设备操作单元执行该第一测试指令对应的点击操作,完成赠送礼物的操作。并将该点击操作与当前用户界面内容进行关联处理,将关联处理的结果以html文件的形式显示在图6所示的区域2中。以此类推,继续执行步骤S405至步骤S408,直至检测到所有的目标事件,并执行完各目标事件对应的第一测试指令。
步骤S409:在执行完设定的用例场景中的所有内容后,响应于测试对象对区域2对应的“保存”控件的触发操作,在当前用户界面中显示图12所示的对当前区域2中的html内容进行保存的提示信息。
响应于测试对象在图12中的信息输入框中输入的内容“游戏测试”,结合OpenCV2算法,将图12所示的对当前区域2中的html内容进行格式转换,得到与当前区域2中的html内容对应的python测试用例脚本文件(即测试用例),并将测试用例保存到testcase目录下,以进行后续的用例回放过程。
图13示出了本申请实施例提供的一种执行驱动文件的过程的流程图。如图13所示,该执行驱动文件的过程主要包括:
步骤S131:执行驱动文件单元响应于对Android游戏设备发起的测试请求,开始进行回放过程。
步骤S132:设备操作单元检测该测试设备是否连接有游戏设备。若该测试设备连接有Android游戏设备,执行步骤S103。若该测试设备没有连接游戏设备,执行步骤S109。
步骤S133:虚拟事件单元创建该测试设备与该Android游戏设备之间的设备调试桥adb。具体的通信连接关系的示意图可以参见图5所示的示意图,只是设备型号以及设备调试桥不同,在此不做赘述。
步骤S134:虚拟事件单元执行测试用例,并通过虚拟投影单元将执行测试用例的过程产生的用户界面内容投影至Android游戏设备上。若执行到battle场景对应的对“按钮A”控件进行点击操作的测试指令,则在Android游戏设备中显示如图14所示的用户界面,并执行步骤S105。
步骤S135:通过屏幕获取单元对Android游戏设备上的当前用户界面进行截图操作,得到第二图像(battle场景的图像),通过adb将第二图像存储在该测试设备对应的temp目录中。
通过图像识别单元基于OpenCV算法,对所获取的第二图像p2与相应的第一图像p1进行识别,根据识别结果截取到第二图像p2中与相应的第一图像p1所在目标区域大小相同的子图像p2’。基于p1的像素直方图与p2’的像素直方图,获取到p1和p2的第一相似度为90%。
基于OCR算法和第一图像p1,通过文本识别单元分别对p1和p2’进行文本提取,得到p1中的文本t1“英雄a与英雄b正在battle”,p2中的文本t2“英雄a与英雄b正在battle”,将t1与t2进行对比,得到p1和p2的第二相似度为100%。
步骤S136:基于第一相似度90%大于第一设定阈值80%,第二相似度100%也大于第二设定阈值80%,可以确定对应于battle场景的第一图像和第二图像是匹配的。
步骤S137:基于所执行的第一测试指令,调用与adb对应的(即与Android系统匹配的)第二测试指令,执行battle场景对应的对“按钮A”控件进行点击操作,以控制当前switch游戏设备所对应的英雄a向对战英雄b发起反击操作。
步骤S138:继续通过虚拟事件单元执行Python测试用例脚本文件,在执行至赠送礼物场景对应的点击操作对应的第一测试指令时,执行该点击操作,完成赠送礼物的操作。以此类推,继续执行步骤S104至步骤S108,直至执行完测试用例。
步骤S139:结束回放过程。
以下结合具体地测试用例,以在测试应用程序(DevMenu Application)中选中用户“TestUser”为例,对执行该测试用例的过程进行说明:
#!/usr/bin/python
#-*-coding:UTF-8-*-
#'''自动生成脚本'''
#'''@time:2021-11-19 19:0:55
(该部分内容表示该Python测试用例脚本的宏)
import time
from api import operation as op
from api.runner import TestcaseRunner
from api.operation import EnumOp
from api.operation import EnumBtn
from api.operation import EnumDirection
(该部分内容表示采集该Python测试用例脚本中各数据的接口)
(该部分内容表示该Python测试用例脚本中的运行界面,开始运行该Python测试用例脚本,基于该部分可以启动该测试设备进行测试,对应于图15a所示的用户界面内容。)
#跳转到Accounts界面,查看TestUser
op.startAPP('DevMenu Application')
op.clickButton(EnumBtn.down)
op.startAPP('res/1634095579569.png',label='TestUser',timeout=1)
(该部分与具体在用户界面显示的游戏内容相关)
其中,op.startApp(‘DevMenu Application’)表示打开测试设备上的测试应用程序,通过运行op.startApp(‘DevMenu Application’),可以在图15a所示的用户界面上执行打开DevMenu Application的操作,并基于该操作在测试设备的用户界面上显示图15b所示的用户界面内容(即测试应用程序的主页面,该主页面中显示有该应用程序对应的“应用程序”控件、“保存数据”控件、“控制器”控件、“用户信息”控件、“设备”控件以及“网络连接”控件等,其中,主页面对应于在“控制器”控件被选中的情况下的页面)。
op.clickButton(EnumBtn.down)表示点击EnumBtn.down控件,通过运行op.clickButton(EnumBtn.down)可以在图15b所示的显示界面上执行EnumBtn.down(即“选中当前控件的下一控件”)的操作,并基于该操作在测试设备的用户界面上显示图15c所示的用户界面内容(即测试应用程序的用户信息选择页面,即在“用户信息”控件被选中的情况下的页面)。
op.click(‘res/1634095579569.png’,label=‘TestUser’,timeout=1)表示点击名称为‘TestUser’的图片‘res/1634095579569.png’,显示时延为1ms,通过运行op.click(‘res/1634095579569.png’,label=‘TestUser’,timeout=1),可以在图15c所示的显示界面上,在延时1ms时执行对名称为‘TestUser’的缩略图‘res/1634095579569.png’的点击操作,并在测试设备的用户界面上显示图15d所示的用户界面显示内容(即选中用户“TestUser”之后,与该用户对应的具体用户信息页面)。
通过上文的描述,通过基于本申请实施例提供的驱动控制设备所实现的驱动控制方法,既可以对针对驱动文件生成请求进行响应,得到生成驱动文件,也可以对针对驱动控制请求进行响应,通过执行所生成的驱动文件,得到驱动控制结果,实现生成驱动文件和执行驱动文件的闭环处理,不需要分别使用两种不同的驱动控制设备生成驱动文件和执行驱动文件,提高对待驱动设备的驱动控制效率。
在对针对驱动文件生成进行响应时,通过控制操作系统的类型为第二操作系统的第二设备运行待测试应用,将第二设备的用户界面内容投影至驱动设备上,并基于对该驱动设备的用户界面内容进行检测结果,进一步得到当前用户界面内容对应于第二设备的操作系统的类型的驱动文件。在对操作系统为第一操作系统的第一设备发送的驱动控制请求进行响应时,将驱动文件中的驱动指令转换为对应于第一操作系统的驱动指令执行,得到驱动控制结果,将驱动控制结果发送至第二设备。实现了可以基于一份驱动文件对不同类型的操作系统的待确定设备进行驱动控制,解决了不同类型的操作系统之间的驱动文件的孤岛问题。
在生成驱动文件的过程中,基于对驱动设备的用户界面内容进行实时检测的,若检测到当前用户界面内容存在预设的至少一个目标事件中的任一目标事件,根据检测到的目标事件对应的预设操作,生成当前用户界面内容对应于第二设备的操作系统的类型的驱动指令,直至预设的至少一个目标事件中的各目标事件均被检测到。并基于生成的各驱动指令,得到对应于第二设备的操作系统的类型的驱动文件。通过该方式,可以自动化地生成驱动文件,不需要通过人力成本编写驱动文件,节约学习成本。也不需要提前预设操作步骤,并通过思维导图或文档的形式保存操作步骤,再通过人工的方式判断操作事件与操作步骤之间的关系,解决了操作事件与对应的操作相分离的问题,减少了对驱动控制过程进行检测的驱动者的依赖性,减少测试工作中的人工工作量,更加快速、高效的进行驱动控制过程。
图16为本申请实施例提供的一种驱动控制方法的流程图。该驱动控制方法可以通过驱动设备实现。该驱动控制方法可以通过运行驱动设备实现,也可以通过驱动设备上的一个应用程序(application,简称APP)或者驱动设备上任一应用程序的插件实现,本申请实施例对此不做限制。通过运行驱动设备、在驱动设备上运行上述应用程序或者触发上述应用程序插件,就可以触发驱动设备对与该驱动设备连接的待驱动设备进行驱动控制。如图16所示,该方法包括以下步骤。
步骤S161:在检测到驱动设备连接有第一设备时,确定第一设备的操作系统的类型。
上文已经对驱动设备和第一设备进行了详细的描述,在此不做赘述。
该驱动控制方法可以是在驱动设备接收到第一设备发起的驱动控制请求之后,检测是否连接有第一设备的。
在该实现方式中,若驱动设备检测到该驱动设备连接有至少两个设备,且存在指定的设备标识(设备标识可以包括但不限于设备型号以及设备名称等),且所连接的设备中存在指定的设备标识对应的设备,则将该指定的设备标识对应的设备作为第一设备,并确定第一设备的操作系统的类型。若该驱动设备连接有至少两个设备,且所连接的设备中不存在指定的设备标识对应的设备,则将所连接的各设备对应的设备列表中的第一个设备作为第一设备,并确定第一设备的操作系统的类型。其中,设备列表可以是基于所连接的各设备对应的连接时间的先后顺序确定的,例如,将在时序上为最先连接的设备作为设备列表中的第一个设备,也可以将在时序上为最后连接的设备作为设备列表中的第一个设备。设备列表也可以是按照英文字母的排列顺序,基于所连接的各设备的设备型号的首字母,对所连接的各设备进行顺序排列或倒序排列。本申请实施例对此不做限制。
步骤S162:基于第一设备的操作系统的类型,采用与第一设备的操作系统的类型相匹配的第一调试桥与第一设备建立通讯连接。
上文已经对如何基于第一设备的操作系统的类型确定对应的第一调试桥的方式进行了详细的描述,在此不做赘述。在确定出第一调试桥后,可以采用第一调试桥建立驱动设备与第一设备之间的通讯连接。
步骤S163:获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令。
本申请实施例对驱动指令的具体类型不做限制,可以包括但不限于用于在第一设备中进行应用程序的安装、应用、卸载等驱动指令,也可以包括但不限于对第一设备中已安装的应用程序进行测试是所需执行的具体操作的驱动指令等,本申请实施例对此不做限制,可以根据实际情况确定。其中,若驱动控制需求为对第一设备中未安装的应用程序进行测试,则可以先向第一设备发送对待测试的应用程序的安装指令,在完成在第一设备上对待测试的应用程序的安装操作之后,再向第一设备发送具体与测试相关的指令,通过在第一设备执行与测试相关的指令,完成后续测试操作。
在通过第一调试桥向第一设备发送驱动指令时,可以通过调用第一调试桥对应的驱动指令集中与驱动指令所指示的操作对应的驱动指令,并将所得到的驱动指令发送至第一设备,从而驱动第一设备执行驱动指令。该驱动第一设备执行驱动指令的操作可以相当于第一设备的使用者对第一设备的操作,即驱动控制操作可以视为模拟第一设备的使用者对第一设备所执行的操作。
在该实现方式中,若驱动指令对应有用户界面内容,在通过驱动第一设备执行驱动指令的过程中,可以在第一设备上显示驱动指令对应的用户界面内容。
在获取到驱动指令之后,通过第一调试桥向第一设备发送驱动指令时,可以调用与所获取的原始驱动指令以及当前调试桥均匹配的命令行向待驱动设备发送驱动指令,以提高驱动控制操作的准确性。
具体地,可以预先根据不同类型的操作系统的原生(自带的)SDK与驱动控制需求进行适配。对于任一类型的操作系统,若该操作系统的原生SDK中与驱动控制需求相关的操作指令的适配结果为适配成功,则可以直接根据该操作系统的原生SDK中与驱动控制需求相关的各操作指令确定该操作系统对应的预配置的驱动指令集。若该操作系统的原生SDK中与驱动控制需求相关的操作指令的适配结果为适配不成功,则可以对原生SDK中与驱动控制需求相关的操作指令进行二次开发(即反编译),以确定与驱动控制需求适配的驱动指令集,使得每个类型的操作系统对应的驱动指令集都可以与驱动控制需求适配。
其中,在对原生SDK进行二次开发时,可以先获取该原生SDK的源码,对该原生SDK对应的源码进行阅读并修改,对修改后的SDK进行重新打包并编译为新的SDK,以满足驱动控制需求。
以驱动控制需求为对游戏应用进行测试,第一设备为switch游戏设备为例,对SDK进行二次开发的过程进行说明:
由于游戏中游戏画面的切换速度非常快,为了更精准地进行图片识别和文本识别,需要使用极快的截图速度获取视频帧,而switch游戏设备自带的SDK中截图耗时为2s左右,不满足测试需求。通过对switch文档(例如,可以为Nintendo(任天堂)文档)与代码的挖掘,采用反编译相关工具修改switch自带的SDK中与截图速度相关的操作指令的底层接口,实现switch的截图速度由0.5fps(Frame Per Second,画面每秒传输帧数)提升至15fps,从而满足自动化测试投影需求。
由于不同的游戏设备所对应的操作系统的类型存在差异,不同类型的操作系统对应的原生SDK不同,可以将与每个类型的操作系统匹配的设备调试桥对应的命令行(即原生SDK)与对应的驱动控制需求进行集成,形成满足对应类型的操作系统的全量指令(即驱动指令集)。
例如,通常使用minitouch与minicap对Android游戏设备执行多点触控与相关手势操作,则可以结合adb命令行与对应于Android游戏设备的操作操作指令进行集成,形成满足Android游戏设备的驱动指令集。以下是分别基于iOS操作系统、Android操作系统和Switch操作系统的游戏设备常用的驱动指令集:
/>
/>
从上表中可以看出,对于针对同一游戏应用的同一个操作,不同类型的操作系统的驱动指令存在差异。通过对不同类型的操作系统的SDK进行二次开发,使得二次开发后的SDK可以与驱动控制需求相适配,并对各类型的操作系统二次开发后的SDK进行存储,可以得到支持不同类型的操作系统的驱动指令集,从而在驱动控制过程中,可以实时根据驱动控制需求以及各类型的操作系统对应的驱动指令集,获取驱动指令。
在通过第一调试桥向第一设备发送驱动指令之后,还可以通过第一调试桥对第一设备的用户界面内容进行检测,并根据第一设备的用户界面内容与驱动指令对应的用户界面内容的匹配结果,获取到对第一设备的驱动控制结果。以根据该驱动控制结果对驱动控制过程中所存在的问题进行改善以使得可以根据该驱动指令对不同类型的操作系统进行驱动控制,提高驱动控制能力。
通过本申请实施例提供的驱动控制方法,在检测到驱动设备连接有待驱动设备(第一设备)时,通过确定待驱动设备的操作系统的类型,并基于所确定的待驱动设备的操作系统的类型,采用与待驱动设备的操作系统的类型相匹配的调试桥,与待驱动设备建立通讯连接,可以实现基于同一驱动设备,与不同类型的操作系统对应的待驱动设备建立通信连接。
进一步地,由于在通过与不同类型的操作系统匹配的调试桥对相应的待驱动设备发送驱动指令时,通过是调用与所获取的原始驱动指令以及当前调试桥均匹配的命令行向待驱动设备发送驱动指令的,即最终发送给待驱动设备的驱动指令必然是可以驱动待驱动设备直接执行的,从而在待驱动设备执行驱动指令的过程中,实现了对待驱动设备的驱动控制操作,避免了在生成驱动指令的电子设备的操作系统的类型与当前的待驱动设备的操作系统的类型不同时,无法通过驱动指令对当前的待驱动设备进行驱动控制操作。
在一种可能的实现方式中,驱动指令包括针对目标应用程序的运行指令以及针对目标应用程序的操作指令,上述获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令,可以包括:
获取运行指令,通过第一调试桥向第一设备发送运行指令,以驱动第一设备通过执行运行指令,运行目标应用程序;
通过第一调试桥将第一设备的用户界面内容投影至驱动设备上;
获取操作指令,通过第一调试桥向第一设备发送操作指令,以驱动第一设备对目标应用程序执行与操作指令对应的操作。
在该实现方式中,若在驱动设备检测到连接有第一设备,且第一设备正在运行目标应用程序,在第一设备接收到运行指令后,还可以通过对应的设备调试桥向该驱动设备发送“已运行目标应用程序”的反馈信息,以使得该驱动设备在接收到该反馈信息后,通过第一调试桥将第一设备的用户界面内容投影至驱动设备上。
当然,若在驱动设备检测到连接有第一设备,且第一设备正在运行目标应用程序,也可以直接通过第一调试桥将第一设备的用户界面内容投影至驱动设备上,并获取操作指令,通过第一调试桥向第一设备发送操作指令,以驱动第一设备对目标应用程序执行与操作指令对应的操作。
通过依次向第一设备发送针对目标应用程序的运行指令以及针对目标应用程序的操作指令,以驱动第一设备运行目标应用程序,并执行与操作指令对应的操作,可以实现对第一设备中的目标应用程序的驱动操作。
在一种可能的实现方式中,驱动设备可以为测试设备,第一设备为第一待测试设备,驱动文件为测试用例,驱动指令为测试指令,上述方法应用于通过测试设备对待测试应用进行测试的过程中,
上述在检测到驱动设备连接有第一待测试设备时,确定第一设备的操作系统的类型,可以包括:
在接收到针对待测试应用的测试请求时,若在检测到测试设备连接有第一待测试设备时,确定第一待测试设备的操作系统的类型;
上述获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令,可以包括:
执行测试用例,获取测试用例中的测试指令;
通过第一调试桥向第一待测试设备发送测试指令,以驱动第一待测试设备执行测试指令。
在上述方法应用于通过测试设备对待测试应用进行测试的过程中时,可以通过测试对象在第一待测试设备项测试设备发起针对待测试应用的测试请求后,执行该方法。其中,测试对象可以为该待测试应用的开发者。通过执行该方法,可以获取到该待测试应用在第一待测试设备中的测试结果。其中,测试结果可以为测试成功或测试失败。若测试结果为测试成功,可以将该待测试应用在第二操作系统上进行运行,例如,在第二操作系统上对该待测试应用进行上线等操作。若测试结果为测试失败,则可以进一步基于该测试结果对待测试应用对应的代码进行修复操作等,直至测试结果为测试成功。
当然,为了提高对待测试应用进行测试的测试准确度,可以通过本申请实施例提供的测试方法定时的对待测试应用进行测试,例如,每天对待测试应用进行测试。
通过本申请实施例提供的方法,获取到该待测试应用在第一待测试设备中的测试结果之后,可以根据测试结果对待测试应用所存在的问题进行改善以使得该待测试应用可以运行于不同的操作系统,或者对待测试应用的部分功能进行升级等。
在一种可能的实现方式中,上述获取驱动指令,通过第一调试桥向第一设备发送驱动指令,可以包括:
获取与第一设备对应的驱动文件,其中,驱动文件中包括驱动指令;
执行驱动文件,在执行到驱动文件中的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备。
在该实现方式中,驱动指令可以为驱动文件中的任一驱动指令。即在本申请实施例所提供的驱动控制方法的实际实施过程中,并不对驱动指令的个数进行限制,可以为一个驱动指令,也可以为多个驱动指令。
在驱动指令为驱动文件中的任一驱动指令时,驱动文件中还可以包括与驱动指令相关的其他内容,例如,对应于驱动指令的图像标识等。
该驱动文件可以是基于驱动设备以及与第一设备的操作系统的类型相同的操作系统对应的设备的交互过程中生成的,也可以是基于驱动设备以及与第一设备的操作系统的类型不同的操作系统对应的设备的交互过程中生成的,本申请实施例对此不做限制。
通过该实现方式,可以基于任一类型的操作系统对应的驱动文件对第一设备进行驱动控制,不需要为特定类型的操作系统设置针对该类型的操作系统的驱动文件,解决了不同类型的操作系统对应的驱动文件的孤岛问题。
在一种可能的实现方式中,驱动文件可以是通过以下方式生成的:
在检测到驱动设备连接有第二设备时,确定第二设备的操作系统的类型;
基于第二设备的操作系统的类型,采用与第二设备的操作系统的类型相匹配的第二调试桥与第二设备建立通讯连接;
通过第二调试桥将第二设备的用户界面内容投影至驱动设备的用户界面上;
对驱动设备的用户界面内容进行检测,直至预设的至少一个目标事件中的各目标事件均被检测到,其中,在检测过程中,若检测到驱动设备的当前用户界面内容存在任一目标事件,执行检测到的目标事件对应的预设操作,并基于检测到的目标事件对应的预设操作和当前用户界面内容,生成当前用户界面内容对应于第二设备的操作系统的类型的驱动指令;
根据生成的各驱动指令,得到对应于第二设备的操作系统的类型的驱动文件,该驱动文件包括生成的各驱动指令;
上述执行驱动文件,在执行到驱动文件中的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备,可以包括:
在执行驱动文件的过程中,通过第一调试桥在第一设备的显示界面显示驱动文件对应的用户界面内容;
若第二设备的操作系统的类型和第一设备的操作系统的类型相同,在执行到驱动文件中的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备;
若第二设备的操作系统的类型和第一设备的操作系统的类型不同,在执行到驱动文件中的驱动指令时,将执行到的驱动指令转换为与第一设备的操作系统的类型对应的驱动指令,并将转换后的驱动指令发送给第一设备。
上文已经对第二设备进行了详细的描述,在此不做赘述。
在该实现方式中,可以是基于驱动者对生成驱动文件控件的触发操作,发起针对驱动文件的生成请求,并进一步检测驱动设备是否连接有第二设备的。其中,驱动者可以为驱动控制的内容对应的开发者,通过本申请实施例提供的驱动控制方法。
在与第二设备建立通讯连接之后,可以通过直接向第二设备发送对驱动文件对应的驱动控制请求对应的运行指令,以使得第二设备通过执行该运行指令,产生与驱动控制请求对应的用户界面内容,进而通过第二调试桥将第二设备的用户界面内容投影至驱动设备的用户界面上。其中,在与第二设备建立通讯连接时,若该第二设备的用户界面内容为与驱动控制请求对应的用户界面内容,则可以将第一设备的用户界面内容投影至测试设备上。
在该实现方式中,可以根据实际需求确定目标事件以及目标事件对应的预设操作,本申请实施例对此不做限制。
示例性地,在驱动控制请求为游戏应用的情况下,目标事件可以为基于选择的游戏英雄选择对应的游戏道具、购买游戏装备、显示游戏结果、目标游戏英雄进行battle等。对应地,“基于选择的游戏英雄选择对应的游戏道具”对应的预设操作可以为对相应的游戏道具进行点击操作(clickButton),“购买游戏装备”对应的预设操作可以为对需要购买的游戏装备进行点击操作,“显示游戏结果”对应的预设操作可以为对当前用户界面进行点击操作,“目标游戏英雄进行battle”对应的预设操作可以为对“A按钮”进行点击操作,控制游戏英雄进行移动、使用相应的游戏道具等。
在驱动设备通过对应的设备调试桥从第二设备中拉取第二设备的用户界面内容时,若第二设备正在运行与驱动控制请求对应的内容,则可以通过对驱动设备的当前用户界面内容进行检测,且可以检测到针对预设的各个目标事件,则可以直接根据检测结果生成驱动文件,并且在第二设备对与驱动控制请求对应的内容运行结束之后,不需要重新生成驱动文件。否则,需要控制第二设备重新开始运行与驱动控制请求对应的内容,直至检测到针对预设的各个目标事件,并进一步生成驱动文件。
在该步骤中,驱动文件还可以包括当前用户界面内容以及对当前用户界面内容所执行的操作,即测试用例中可以包括但不限于实时获取到的当前用户界面内容对应的html内容、与目标事件相关的驱动指令以及对应的操作。
其中,在生成驱动文件的过程中,对于同一驱动控制请求,基于不同类型的操作系统所得到的html内容可能不同,在获取到原始的html内容、与目标事件相关的驱动指令以及对应的操作之后,可以对获取的内容进行格式转换得到Python格式的驱动文件。
如前文所记载的,生成驱动文件对应的操作系统的类型与执行驱动文件对应的操作系统的类型可能不同,即存在第二设备的操作系统的类型和第一设备的操作系统的类型不同的情况。则在基于第二设备对应的操作系统的类型生成原始的驱动文件后,可以通过将原始的驱动文件转换Python格式的驱动文件,在执行到驱动文件中的驱动指令时,直接调用与第一设备的操作系统的类型对应的驱动指令,并发送至第一设备。也可以直接基于原始的驱动文件,在执行到驱动文件中的驱动指令时,将执行到的驱动指令转换为与第一设备的操作系统的类型对应的驱动指令,并将转换后的驱动指令发送给第一设备。本申请实施例对此不做限制,无论采取哪种方式,都可以实现对第一设备的驱动控制。
在生成驱动文件的过程中,可以基于预先设置的目标事件以及各目标事件对应的预设操作自动化地生成驱动文件,不需要通过人力成本编写驱动文件,节约对相应的驱动设备的学习成本。也不需要提前预设操作步骤,再通过人工的方式判断操作事件与操作步骤之间的关系,解决了操作事件与对应的操作相分离的问题,减少测试工作中的人工工作量,更加快速、高效的生成驱动文件。
在驱动控制需求对应有用户界面内容时,还可以基于对用户界面内容进行检测,以更好地获取驱动控制结果。由于在执行驱动文件的过程中,在第一设备上显示的用户界面内容是通过执行对第二设备上的用户界面内容以及相应的操作生成的驱动文件得到的,理想情况下,在通过驱动文件成功对驱动控制第一设备时,第一设备上显示的用户界面内容应该与对应的第二设备上的用户界面内容完全相同。针对于此,本申请实施例提供了以下可选的实施方式:
在一种可能的实现方式中,预设的至少一个目标事件中包括至少一个第一目标事件,第一目标事件为绑定有截图操作的目标事件,上述基于检测到的目标事件对应的预设操作和当前用户界面内容,生成当前用户界面内容对应于第二设备的操作系统的类型的驱动指令,可以包括:
若检测到的目标事件为第一目标事件,响应于针对驱动设备的当前用户界面内容的截图操作得到第一图像;
基于第一图像的标识、检测到的目标事件对应的预设操作和当前用户界面内容,生成当前用户界面内容对应的驱动指令;
上述在执行到的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备,可以包括:
若执行到的驱动指令中包括第一图像的标识,生成对应于第一设备的操作系统的截图指令,并基于执行到的驱动指令中第一图像的标识,获取执行到的驱动指令对应的第一图像;
通过第一调试桥向第一设备发送截图指令,以使第一设备通过执行截图指令获取到与第一图像对应的第二图像;
将第二图像与相应的第一图像进行匹配,得到匹配结果;
在匹配结果为第二图像与相应的第一图像匹配时,通过第一调试桥驱动第一设备执行该执行到的驱动指令对应的预设操作。
需要说明的是,在该实现方式中,驱动指令中对应的操作是指在对第一设备进行驱动控制过程中和实际运行过程中都需要进行的操作,截图操作只是在驱动控制过程中为了更好地验证驱动控制效果而产生的操作,在实际运行过程中可以不执行截图操作。
对于一个驱动控制请求的部分用户界面内容,也可以仅设置对该用户界面内容进行截图操作,而不对该用户界面内容执行预设操作。可以根据实际情况确定,本申请实施例对此不做限制。
其中,对第一图像进行验证的操作指令(即检测到的第一目标事件对应的预设操作)可以包括但不限于find指令(表征确认当前用户界面是否有所存储的任一第一图像,即在执行驱动文件的过程中,当前用户界面中显示的内容是否存在于第一图像相同的图像,如前文所记载的,第一图像可以是通过截取当前用户界面内容的目标区域得到的,find指令也可以表示第二图像是否存在与所存储的任一第一图像相似度较高的部分区域)、wait指令(表征等待所存储的任一第一图像出现,即在执行驱动文件的过程中,等待用户界面中出现与第一图像相同的图像)、click(表征出现所存储的任一第一图像后点击第一图像,即在执行驱动文件的过程中,在用户界面中出现与第一图像相同的图像时,点击当前用户界面内容),可以根据实际情况确定。
通过在生成驱动文件的过程中,可以基于第一图像的标识、检测到的第一目标事件对应的预设操作和当前用户界面内容,生成驱动指令,实现第一图像与预设操作之间的关联。从而在执行驱动文件的过程中,在执行到的驱动指令中包括第一图像的标识的情况下,可以先对当前用户界面内容进行截图操作,得到第二图像,在第二图像与第一图像匹配时,再通过第一调试桥驱动第一设备执行该执行到的驱动指令对应的预设操作。可以实现对驱动控制过程中,对用户界面内容的验证,获取到更精确的驱动控制结果,有利于更好地实现驱动控制过程。
考虑到在待测试应用的用户界面内容中,可能还会存在文本内容,针对于此,可以通过以下方式获取第二图像和对应的第一图像的图像相似度。
在一种可能的实现方式中,将第二图像与相应的第一图像进行匹配,得到匹配结果,可以包括:
若第二图像与相应的第一图像中的至少一个图像中不存在文本,基于分别对第二图像与相应的第一图像进行图像识别的结果,得到匹配结果;
若第二图像和相应的第一图像中均存在文本,基于分别对第二图像和相应的第一图像进行图像识别的结果以及分别对第二图像和相应的第一图像进行文本提取的结果,得到匹配结果。
可以基于第二图像和该第二图像对应的第一图像,通过包括但不限于OpenCV等技术获取第二图像的第一像素直方图,以及与第二图像对应的第一图像的第二像素直方图,从而基于第一像素直方图和第二像素直方图之间的第一相似度获取到匹配结果。
当然,也可以基于训练好的图像识别模型,分别将第二图像和与第二图像对应的第一图像输入至该图像识别模型中,通过该图像识别模型提取到的第一图像的第一图像特征和与第二图像对应的第一图像的第二图像特征,从而基于第一图像特征和第二图像特征之间的相似度获取到对应的匹配结果。
其中,在第一图像p1为用户界面中的部分区域对应的图像的情况下,还可以先基于第一像素直方图和第二像素直方图进行像素对比,在第二图像p2中进行查找,查找到与第一图像p1在用户界面中的位置相同的第三图像p2’,从而将第一图像和第三图像p2’的相似度作为第一相似度。
考虑到基于像素直方图确定相似度的方式所需时长更短,效率更高,在实际实施过程中,可以采用基于像素直方图确定第一相似度的方式确定第二图像和相应的第一图像之间的匹配结果。
可以基于第二图像和该第二图像对应的第一图像,通过包括但不限于OCR(例如,Google Docs-TesseractOCR文本识别算法、腾讯优图OCR文本识别算法)等技术,分别提取第二图像中的第一文本以及该第二图像对应的第一图像中的第二文本,进而确定第一文本和第二文本之间的第二相似度,进而确定第二图像和相应的第一图像之间的匹配结果。
在该实现方式中,通过在驱动控制过程中,基于分别对第二图像和相应的第一图像进行图像识别的结果以及文本提取的结果,获取第二图像和相应的第一图像的匹配结果,可以获取到更精确的匹配结果,有利于更好地对用户界面内容进行验证,从而更好地实现驱动控制过程。
在一种可能的实现方式中,上述分别对第二图像与相应的第一图像进行图像识别的结果可以是通过以下方式确定的:
对第二图像进行图像识别,得到第一图像识别结果,该第一图像识别结果为第二图像的像素直方图;
对相应的第一图像进行图像识别,得到第二图像识别结果,该第二图像识别结果为相应的第一图像的像素直方图;
上述分别对第一图像和相应的第一图像进行文本提取的结果可以是通过以下方式确定的:
对第二图像进行文本提取,得到第一文本;
对相应的第一图像进行文本提取,得到第二文本;
上述基于分别对第二图像与相应的第一图像进行图像识别的结果,得到匹配结果,可以包括:
在第一图像识别结果和第二图像识别结果相匹配时,确定匹配结果为第二图像与相应的第一图像相匹配;
上述基于分别对第二图像和相应的第一图像进行图像识别的结果以及分别对第二图像与相应的第一图像进行文本提取的结果,得到匹配结果,可以包括:
在第一图像识别结果和第二图像结果相匹配,且第一文本和第二文本相匹配时,确定匹配结果为第二图像与相应的第一图像相匹配。
在该实现方式中,在得到第一相似度和第二相似度之后,可以将第一相似度和第二相似度的均值与预设的相似度阈值之间的大小关系,确定第二图像和相应的第一图像的匹配结果。
其中,可以根据实际需求设置预设的相似度阈值,在第二图像和相应的第一图像之间的图像相似度大于或等于预设的相似度阈值的情况下,确定匹配结果为第二图像和相应的第一图像相匹配。在第二图像和相应的第一图像之间的图像相似度小于预设的相似度阈值的情况下,确定匹配结果为第二图像和相应的第一图像不匹配。
当然,也可以分别设置第一相似度对应的第一相似度阈值,以及第二相似度对应的第二相似度阈值。在第一相似度大于或等于第一相似度阈值,且第二相似度大于或等于第二显示度阈值的情况下,确定第二图像和相应的第一图像的匹配结果为相匹配。在第一相似度小于第一相似度阈值,或者将第二相似度小于第二显示度阈值的情况下,确定第二图像和相应的第一图像的匹配结果为不匹配。
通过在执行驱动文件的过程得到的第二图像或与该第二图像对应的在生成驱动文件的过程中截取到的第一图像中任一个图像中不存在文本内容的情况下,将基于二者的像素直方图的匹配结果确定第二图像和相应的第一图像的匹配结果;在二者均存在文本内容的情况下,基于二者的像素直方图的匹配结果以及二者中的文本的匹配结果,确定第二图像和相应的第一图像的匹配结果,可以从多个维度对用户界面内容进行检测,从而更精确的完成对第一设备的驱动控制。
基于与本申请实施例提供的驱动控制方法相同的原理,本申请实施例中还提供了一种驱动控制装置。图17示出了本申请实施例中提供的一种驱动控制装置的示意图。如图17所示,该驱动控制装置200应用于驱动设备中,包括:
类型确定模块210,用于在检测到驱动设备连接有第一设备时,确定第一设备的操作系统的类型。
通讯连接模块220,用于基于第一设备的操作系统的类型,采用与第一设备的操作系统的类型相匹配的第一调试桥与第一设备建立通讯连接;
驱动模块230,用于获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令。
在一种可能的实现方式中,驱动指令包括针对目标应用程序的运行指令以及针对目标应用程序的操作指令,上述驱动模块230在获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令时,可以具体用于:
获取运行指令,通过第一调试桥向第一设备发送运行指令,以驱动第一设备通过执行运行指令,运行目标应用程序;
通过第一调试桥将第一设备的用户界面内容投影至驱动设备上;
获取操作指令,通过第一调试桥向第一设备发送操作指令,以驱动第一设备对目标应用程序执行与驱动指令对应的操作。
在一种可能的实现方式中,上述驱动模块230在获取驱动指令,通过第一调试桥向第一设备发送驱动指令时,可以具体用于:
获取与第一设备对应的驱动文件,其中,驱动文件中包括驱动指令;
执行驱动文件,在执行到驱动文件中的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备。
在一种可能的实现方式中,上述装置200还包括驱动文件生成模块,驱动文件可以是驱动文件生成模块通过以下方式生成的:
在检测到驱动设备连接有第二设备时,确定第二设备的操作系统的类型;
基于第二设备的操作系统的类型,采用与第二设备的操作系统的类型相匹配的第二调试桥与第二设备建立通讯连接;
通过第二调试桥将第二设备的用户界面内容投影至驱动设备的用户界面上;
对驱动设备的用户界面内容进行检测,直至预设的至少一个目标事件中的各目标事件均被检测到,其中,在检测过程中,若检测到驱动设备的当前用户界面内容存在任一目标事件,执行检测到的目标事件对应的预设操作,并基于检测到的目标事件对应的预设操作和当前用户界面内容,生成当前用户界面内容对应于第二设备的操作系统的类型的驱动指令;
根据生成的各驱动指令,得到对应于第二设备的操作系统的类型的驱动文件,该驱动文件包括生成的各驱动指令;
上述驱动模块230在执行驱动文件,并在执行到驱动文件中的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备时,可以具体用于:
在执行驱动文件的过程中,通过第一调试桥在第一设备的显示界面显示驱动文件对应的用户界面内容;
若第二设备的操作系统的类型和第一设备的操作系统的类型相同,在执行到驱动文件中的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备;
若第二设备的操作系统的类型和第一设备的操作系统的类型不同,在执行到驱动文件中的驱动指令时,将执行到的驱动指令转换为与第一设备的操作系统的类型对应的驱动指令,并将转换后的驱动指令发送给第一设备。
在一种可能的实现方式中,预设的至少一个目标事件中包括至少一个第一目标事件,第一目标事件为绑定有截图操作的目标事件,上述驱动文件生成模块在基于检测到的目标事件对应的预设操作和当前用户界面内容,生成当前用户界面内容对应于第二设备的操作系统的类型的驱动指令时,可以具体用于:
若检测到的目标事件为第一目标事件,响应于针对驱动设备的当前用户界面内容的截图操作得到第一图像;
基于第一图像的标识、检测到的目标事件对应的预设操作和当前用户界面内容,生成当前用户界面内容对应的驱动指令;
上述驱动模块230在用于在执行到的驱动指令时,通过第一调试桥将执行到的驱动指令发送给第一设备时,可以具体用于:
若执行到的驱动指令中包括第一图像的标识,生成对应于第一设备的操作系统的截图指令,并基于执行到的驱动指令中第一图像的标识,获取执行到的驱动指令对应的第一图像;
通过第一调试桥向第一设备发送截图指令,以使第一设备通过执行截图指令获取到与第一图像对应的第二图像;
将第二图像与相应的第一图像进行匹配,得到匹配结果;
在匹配结果为第二图像与相应的第一图像匹配时,通过第一调试桥驱动第一设备执行该执行到的驱动指令对应的预设操作。
在一种可能的实现方式中,上述驱动模块230在将第二图像与相应的第一图像进行匹配,得到匹配结果时,可以具体用于:
若第二图像与相应的第一图像中的至少一个图像中不存在文本,基于分别对第二图像与相应的第一图像进行图像识别的结果,得到匹配结果;
若第二图像和相应的第一图像中均存在文本,基于分别对第二图像和相应的第一图像进行图像识别的结果以及分别对第二图像和相应的第一图像进行文本提取的结果,得到匹配结果。
在一种可能的实现方式中,上述分别对第二图像与相应的第一图像进行图像识别的结果可以是驱动模块230通过以下方式确定的:
对第二图像进行图像识别,得到第一图像识别结果,该第一图像识别结果为第二图像的像素直方图;
对相应的第一图像进行图像识别,得到第二图像识别结果,该第二图像识别结果为相应的第一图像的像素直方图;
上述分别对第一图像和相应的第一图像进行文本提取的结果可以是驱动模块230通过以下方式确定的:
对第二图像进行文本提取,得到第一文本;
对相应的第一图像进行文本提取,得到第二文本;
上述驱动模块230在基于分别对第二图像与相应的第一图像进行图像识别的结果,得到匹配结果时,可以具体用于:
在第一图像识别结果和第二图像识别结果相匹配时,确定匹配结果为第二图像与相应的第一图像相匹配;
上述驱动模块230在基于分别对第二图像和相应的第一图像进行图像识别的结果以及分别对第二图像与相应的第一图像进行文本提取的结果,得到匹配结果时,可以具体用于:
在第一图像识别结果和第二图像结果相匹配,且第一文本和第二文本相匹配时,确定匹配结果为第二图像与相应的第一图像相匹配。
在一种可能的实现方式中,驱动设备可以为测试设备,第一设备为第一待测试设备,驱动文件为测试用例,驱动指令为测试指令,上述驱动装置应用于通过测试设备对待测试应用进行测试的过程中,
上述类型确定模块210在用于在检测到驱动设备连接有第一待测试设备时,确定第一设备的操作系统的类型时,可以具体用于:
在接收到针对待测试应用的测试请求时,若在检测到测试设备连接有第一待测试设备时,确定第一待测试设备的操作系统的类型;
上述驱动模块在获取驱动指令,通过第一调试桥向第一设备发送驱动指令,以驱动第一设备执行驱动指令时,可以具体用于:
执行测试用例,获取测试用例中的测试指令;
通过第一调试桥向第一待测试设备发送测试指令,以驱动第一待测试设备执行测试指令。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
基于与本申请实施例提供的驱动控制方法及装置相同的原理,本申请实施例中还提供了一种电子设备(如服务器),该电子设备可以包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现本申请任一可选实施例中提供的方法的步骤。
在一种可能的实现方式中,图18示出了本申请实施例所适用的一种电子设备的结构示意图,如图18所示,图18所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。在一种可能的实现方式中,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图18中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。

Claims (12)

1.一种驱动控制方法,其特征在于,所述方法通过驱动设备执行,包括:
在检测到所述驱动设备连接有第一设备时,确定所述第一设备的操作系统的类型;
基于所述第一设备的操作系统的类型,采用与所述第一设备的操作系统的类型相匹配的第一调试桥与所述第一设备建立通讯连接;
获取驱动指令,通过所述第一调试桥向所述第一设备发送所述驱动指令,以驱动所述第一设备执行所述驱动指令。
2.根据权利要求1所述的方法,其特征在于,所述驱动指令包括针对目标应用程序的运行指令以及针对所述目标应用程序的操作指令,所述获取驱动指令,通过所述第一调试桥向所述第一设备发送所述驱动指令,以驱动所述第一设备执行所述驱动指令,包括:
获取所述运行指令,通过所述第一调试桥向所述第一设备发送所述运行指令,以驱动所述第一设备通过执行所述运行指令,运行所述目标应用程序;
通过所述第一调试桥将所述第一设备的用户界面内容投影至所述驱动设备上;
获取所述操作指令,通过所述第一调试桥向所述第一设备发送所述操作指令,以驱动所述第一设备对所述目标应用程序执行与所述操作指令对应的操作。
3.根据权利要求1或2所述的方法,其特征在于,所述获取驱动指令,通过所述第一调试桥向所述第一设备发送所述驱动指令,包括:
获取与所述第一设备对应的驱动文件,其中,所述驱动文件中包括驱动指令;
执行所述驱动文件,在执行到所述驱动文件中的驱动指令时,通过所述第一调试桥将执行到的驱动指令发送给所述第一设备。
4.根据权利要求3所述的方法,其特征在于,所述驱动文件是通过以下方式生成的:
在检测到所述驱动设备连接有第二设备时,确定所述第二设备的操作系统的类型;
基于所述第二设备的操作系统的类型,采用与所述第二设备的操作系统的类型相匹配的第二调试桥与所述第二设备建立通讯连接;
通过所述第二调试桥将所述第二设备的用户界面内容投影至所述驱动设备的用户界面上;
对所述驱动设备的用户界面内容进行检测,直至预设的至少一个目标事件中的各所述目标事件均被检测到,其中,在检测过程中,若检测到所述驱动设备的当前用户界面内容存在任一所述目标事件,执行检测到的目标事件对应的预设操作,并基于所述检测到的目标事件对应的预设操作和所述当前用户界面内容,生成所述当前用户界面内容对应于所述第二设备的操作系统的类型的驱动指令;
根据生成的各驱动指令,得到对应于所述第二设备的操作系统的类型的驱动文件,所述驱动文件包括生成的各驱动指令;
所述执行所述驱动文件,在执行到所述驱动文件中的驱动指令时,通过所述第一调试桥将执行到的驱动指令发送给所述第一设备,包括:
在执行所述驱动文件的过程中,通过所述第一调试桥在所述第一设备的显示界面上显示所述驱动文件对应的用户界面内容;
若所述第二设备的操作系统的类型和所述第一设备的操作系统的类型相同,在执行到所述驱动文件中的驱动指令时,通过所述第一调试桥将执行到的驱动指令发送给所述第一设备;
若所述第二设备的操作系统的类型和所述第一设备的操作系统的类型不同,在执行到所述驱动文件中的驱动指令时,将所述执行到的驱动指令转换为与所述第一设备的操作系统的类型对应的驱动指令,并将转换后的驱动指令发送给所述第一设备。
5.根据权利要求4所述的方法,其特征在于,所述预设的至少一个目标事件中包括至少一个第一目标事件,所述第一目标事件为绑定有截图操作的目标事件,所述基于所述检测到的目标事件对应的预设操作和所述当前用户界面内容,生成所述当前用户界面内容对应于所述第二设备的操作系统的类型的驱动指令,包括:
若检测到的目标事件为第一目标事件,响应于针对所述驱动设备的当前用户界面内容的截图操作得到第一图像;
基于所述第一图像的标识、所述检测到的目标事件对应的预设操作和所述当前用户界面内容,生成所述当前用户界面内容对应的驱动指令;
所述在执行到所述驱动文件中的驱动指令时,通过所述第一调试桥将执行到的驱动指令发送给所述第一设备,包括:
若所述执行到的驱动指令中包括第一图像的标识,生成对应于所述第一设备的操作系统的截图指令,并基于所述执行到的驱动指令中第一图像的标识,获取所述执行到的驱动指令对应的第一图像;
通过所述第一调试桥向所述第一设备发送所述截图指令,以使所述第一设备通过执行所述截图指令获取到与所述第一图像对应的第二图像;
将所述第二图像与相应的第一图像进行匹配,得到匹配结果;
在所述匹配结果为所述第二图像与所述相应的第一图像匹配时,通过所述第一调试桥驱动所述第一设备执行所述执行到的驱动指令对应的预设操作。
6.根据权利要求5所述的方法,其特征在于,所述将所述第二图像与相应的第一图像进行匹配,得到匹配结果,包括:
若所述第二图像和所述相应的第一图像中的至少一个图像中不存在文本,基于分别对所述第二图像与所述相应的第一图像进行图像识别的结果,得到所述匹配结果;
基于分别对所述第二图像与所述相应的第一图像进行图像识别的结果以及分别对所述第二图像与所述相应的第一图像进行文本提取的结果,得到所述匹配结果。
7.根据权利要求6所述的方法,其特征在于,所述分别对所述第二图像与所述相应的第一图像进行图像识别的结果是通过以下方式确定的:
对所述第二图像进行图像识别,得到第一图像识别结果,所述第一图像识别结果为所述第二图像的像素直方图;
对所述相应的第一图像进行图像识别,得到第二图像识别结果,所述第二图像识别结果为所述相应的第一图像的像素直方图;
所述分别对所述第二图像和所述相应的第一图像进行文本提取的结果是通过以下方式确定的:
对所述第二图像进行文本提取,得到第一文本;
对所述相应的第一图像进行文本提取,得到第二文本;
所述基于分别对所述第二图像与所述相应的第一图像进行图像识别的结果,得到所述匹配结果,包括:
在所述第一图像识别结果和所述第二图像识别结果相匹配时,确定所述匹配结果为所述第二图像与所述相应的第一图像相匹配;
所述基于分别对所述第二图像与所述相应的第一图像进行图像识别的结果以及分别对所述第二图像与所述相应的第一图像进行文本提取的结果,得到所述匹配结果,包括:
在所述第一图像识别结果和所述第二图像识别结果相匹配,且所述第一文本和所述第二文本相匹配时,确定所述匹配结果为所述第二图像与所述相应的第一图像相匹配。
8.根据权利要求3所述的方法,其特征在于,所述驱动设备为测试设备,所述第一设备为第一待测试设备,所述驱动文件为测试用例,所述驱动指令为测试指令,所述方法应用于通过所述测试设备对待测试应用进行测试的过程中,
所述在检测到所述驱动设备连接有第一待测试设备时,确定所述第一设备的操作系统的类型,包括:
在接收针对所述待测试应用的测试请求时,若在检测到所述测试设备连接有所述第一待测试设备时,确定所述第一待测试设备的操作系统的类型;
所述获取驱动指令,通过所述第一调试桥向所述第一设备发送所述驱动指令,以驱动所述第一设备执行所述驱动指令,包括:
执行所述测试用例,获取所述测试用例中的测试指令;
通过所述第一调试桥向所述第一待测试设备发送所述测试指令,以驱动所述第一待测试设备执行所述测试指令。
9.一种驱动控制装置,其特征在于,所述装置应用于驱动设备中,包括:
类型确定模块,用于在检测到所述驱动设备连接有第一设备时,确定所述第一设备的操作系统的类型;
通讯连接模块,用于基于所述第一设备的操作系统的类型,采用与所述第一设备的操作系统的类型相匹配的第一调试桥与所述第一设备建立通讯连接;
驱动模块,用于获取驱动指令,通过所述第一调试桥向所述第一设备发送所述驱动指令,以驱动所述第一设备执行所述驱动指令。
10.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-8任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述方法的步骤。
CN202210541720.3A 2022-05-17 2022-05-17 驱动控制方法、装置、电子设备及计算机存储介质 Pending CN117112034A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210541720.3A CN117112034A (zh) 2022-05-17 2022-05-17 驱动控制方法、装置、电子设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210541720.3A CN117112034A (zh) 2022-05-17 2022-05-17 驱动控制方法、装置、电子设备及计算机存储介质

Publications (1)

Publication Number Publication Date
CN117112034A true CN117112034A (zh) 2023-11-24

Family

ID=88807954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210541720.3A Pending CN117112034A (zh) 2022-05-17 2022-05-17 驱动控制方法、装置、电子设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN117112034A (zh)

Similar Documents

Publication Publication Date Title
EP3215900B1 (en) Robotic process automation
DK2996015T3 (en) PROCEDURE TO USE IMPROVED REALITY AS HMI VIEW
CN101867755B (zh) 信息处理设备、信息处理方法
WO2016206113A1 (en) Technologies for device independent automated application testing
CN111512344A (zh) 使用增强用生成式对抗神经网络从cad数据生成合成深度图像
US20160034383A1 (en) Application test across platforms
US10810113B2 (en) Method and apparatus for creating reference images for an automated test of software with a graphical user interface
US20150347270A1 (en) Automatic test system and test method for computer, record medium, and program product
CN108829371B (zh) 界面控制方法、装置、存储介质及电子设备
CN106982368B (zh) 视频响应速度检测方法和系统
CN112818456B (zh) 图层配置方法、电子设备及相关产品
TWI678614B (zh) 測試系統
WO2017001560A1 (en) Robotic process automation
CN113505082B (zh) 应用程序测试方法及装置
JP6653929B1 (ja) 自動判別処理装置、自動判別処理方法、検査システム、プログラム、および記録媒体
CN111324352A (zh) 一种应用页面的代码生成方法及相关设备
KR102035531B1 (ko) 대표 이미지 생성
CN112988568A (zh) 游戏测试方法、装置及电子设备
CN117112034A (zh) 驱动控制方法、装置、电子设备及计算机存储介质
Ambardekar et al. Ground truth verification tool (GTVT) for video surveillance systems
CN114972500A (zh) 查验方法、标注方法、系统、装置、终端、设备及介质
CN109840203B (zh) 一种基于消息映射的vr自动化测试方法
KR101987183B1 (ko) 프론트-앤드 개발을 지원하는 앱 저작 장치, 앱 저작 도구를 사용한 앱 저작 방법 및 앱 개발 서버
CN106775701B (zh) 一种客户端自动取证方法和系统
TWI691836B (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