CN103502936B - 基于图像的自动化系统和方法 - Google Patents
基于图像的自动化系统和方法 Download PDFInfo
- Publication number
- CN103502936B CN103502936B CN201180070362.2A CN201180070362A CN103502936B CN 103502936 B CN103502936 B CN 103502936B CN 201180070362 A CN201180070362 A CN 201180070362A CN 103502936 B CN103502936 B CN 103502936B
- Authority
- CN
- China
- Prior art keywords
- image
- drawing object
- action
- semantic information
- automated system
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
Abstract
在一种实施方式中,基于图像的自动化处理包括识别图形用户界面的图形对象和在图形用户界面中相对于图形对象执行动作。该识别基于包括图形对象的图像。
Description
背景技术
软件自动化系统不接收与来自用户的那些任务有关的指令而对软件应用执行动作。传统的软件自动化系统依赖记录和重放样式。在记录阶段中记录一系列动作,然后在重放或者自动化阶段中关于软件应用自动地执行这些动作。
通常,软件自动化系统依赖对要被自动化的软件应用的运行时环境的理解。例如,在记录阶段期间,软件自动化系统与软件应用的运行时环境通信,以接收与软件应用内的动作有关的信息。软件自动化系统然后将指令发送到运行时环境,以在重放或者自动化阶段期间执行那些动作。
附图说明
图1是根据一种实施方式处于记录阶段的基于图像的自动化系统的图示。
图2是根据一种实施方式的处于重放阶段的基于图像的自动化系统的图示。
图3是根据一种实施方式的基于图像的自动化系统的示意性框图。
图4是根据一种实施方式的托管基于图像的自动化系统的计算装置的示意性框图。
图5是根据另一种实施方式的基于图像的自动化系统的示意性框图。
图6是根据一种实施方式的确定与图形对象相关联的动作的方法的流程图。
图7是根据一种实施方式的执行关于图形对象的动作的方法的流程图。
图8是根据一种实施方式的包括处理器和存储介质的系统的示意性框图。
具体实施方式
已知的软件自动化系统(或者自动化系统)通常依赖对要被自动化的软件应用的运行时环境的理解和/或与要被自动化的软件应用的运行时环境的关系(例如JavaTM运行时环境或者Microsoft.NetTM运行时环境)。例如,这种自动化系统通过以下来使在软件应用中或者关于软件应用的动作执行自动化:在记录阶段中与软件应用的运行时环境交互(例如通信)来记录在软件应用的图形对象(例如按钮、滑动块、图标、列表或者文字框)处或者关于该图形对象的动作,然后在重放或者自动化阶段中与软件应用的运行时环境交互来重放或者执行在图形对象处或者关于该图形对象的那些动作。在自动化系统的记录阶段期间所记录的软件应用和通过自动化系统来执行动作的软件应用可以统称为自动化软件应用。
作为特定的示例,自动化系统可以接收图形对象的标识符和在记录阶段期间对来自运行时环境的图形对象所执行的动作的标识符。自动化系统可以通过在重放阶段期间向运行时环境提供图形对象的标识符和动作的标识符来重放那个动作。因此,这种自动化系统依靠与运行时环境的通信和对运行时环境的理解(例如阐释来自运行时环境的标识符的能力)来记录和重放动作。
在本文中讨论的实施方式包括基于图像的软件自动化系统(或者基于图像的自动化系统),该软件自动化系统利用例如软件应用的图像(例如,诸如位图、JPEG格式化图像或者其它视觉表示的视觉表示)来识别其中发生动作的图形对象。例如,在本文中讨论的基于图像的自动化系统记录在基于自动化软件应用的图像所识别的图形对象或者包括自动化软件应用的图形对象(例如,自动化软件应用在其中被示出或者表示的图像)中所执行的(例如,产生诸如鼠标按下事件、鼠标移动事件等系统事件的)动作。此外,在本文中讨论的基于图像的软件自动化系统可以访问动作和图形对象的说明(例如,在记录阶段期间所生成的动作和图形对象的说明,在记录阶段和稍后的修改期间所生成的动作和图形对象的说明或者由系统管理员所生成的动作和图形对象的说明),并且基于不同的自动化软件应用的图像在那些图形对象中重放那些动作。
因为这种基于图像的软件自动化系统不依赖对的正在自动化的软件应用的运行时环境(例如,在其中执行这些软件应用的运行时环境)的了解,因此利用这些基于图像的软件自动化系统可以使在不同的运行时环境或者平台(例如不同的操作系统)下的软件应用自动化。此外,这种基于图像的自动化系统不需要在每次运行时环境改变或者新的运行时环境引入时被修改或者更新。
如本文所使用的,单数形式包括复数个所指对象,除非上下文另外清楚地指示。因此,例如,术语"图像"意在表示一个或多个图像或者图像的组合或者序列。另外,如在本文中使用的,术语"模块"是指硬件(例如,像集成电路或者其它电路之类的处理器)和软件(例如,机器或者处理器可执行指令、命令或者诸如固件、编制程序或者目标代码的代码)的组合。硬件和软件的组合包括单独的硬件(即,没有软件单元的硬件单元)、托管在硬件中的软件(例如,存储在存储器中并且在处理器中执行或者解释的软件)或者托管在硬件中的硬件和软件。
作为基于图像的自动化系统的示例,图1是根据实施方式的记录阶段中的基于图像的自动化系统的例示。图形用户界面(或者"GUI")110是托管在计算装置中并且将被自动化的软件应用的基于图像的用户界面(例如,在基于图像的自动化系统120的重放阶段期间在没有用户的情况下对GUI110的图形对象执行动作)。GUI110作为包括用户可对其执行动作的各种图形对象的图像被显示给用户。图形对象是图像的部分。例如,图形对象可以是图像内的图标。图标是图像的部分或者是图像内的表示资源和/或功能的子图像。作为特定的示例,GUI内的控件是表示经由GUI可获得的或者可访问的资源和/或功能的图标,是图形对象。即,GUI是包括一个或多个图形对象的图像。这种控件的示例包括控制按钮(例如按钮和单选按钮)、检查框、编辑框、列表(例如,滚动列表和下拉列表)、应用访问控件(例如,表示软件应用的图标)、文件访问控件(例如,表示文件的图标)以及资源访问控件(例如,表示诸如通过通信链路可访问的服务的资源的图标)。
具体地说,GUI110包括具有三个单选按钮控件(标记为“选项1”、“选项2”以及“选项3”)的单选按钮组111、具有三个复选框控件(标记为“选择1”、“选择2”以及“选择3”)的复选框组112、下拉列表控件113(包括条目“数值1”、“数值2”以及“数值3”)、编辑框控件114以及按钮控件115和116。在其它实施方式中,GUI110可以包括比图1中例示的控件多或者少的控件。例如,图形用户界面110可以除去编辑框控件114并且可以包括表示软件应用并且使那个软件应用在托管包括GUI110的软件应用的计算装置中被执行的应用访问控件(例如,图标)。
基于图像的自动化系统120访问GUI110的图像来确定是否已经对GUI110的图形对象(或者包括GUI110的软件应用)执行了动作。例如,每当动作(例如,像鼠标光标移动、鼠标单击发生或者诸如键按下事件或者键释放事件的键盘事件)在GUI110中发生,基于图像的自动化系统120访问GUI110的图像来确定在GUI110的图形对象中是否发生动作。作为示例,包括GUI110的软件应用托管在其内的操作系统可以向基于图像的自动化系统120提供该动作的通知。替换地,基于图像的自动化系统120可以接收在托管基于图像的自动化系统120的计算装置的操作系统内发生的每个动作,并且基于图像的自动化系统120可以访问GUI110的图像来确定在GUI110的图形对象中是否发生动作。
动作是相对于显示器或者显示器中的位置执行的一些输入。例如,可以相对于图形对象执行动作。例如,动作包括鼠标光标的移动、利用鼠标光标的单击或者双击、在图形对象中、附近或者两端的单击并拖动移动、在图形对象被选择或具有输入光标时的键盘事件以及高亮度显示图形对象。
在一些实施方式中,基于图像的自动化系统120接收该动作的通知、访问GUI110的图像、识别输入指示器(例如,像鼠标光标的光标)的位置、识别非常接近于光标的图形对象以及确定在图形对象中是否发生该动作。例如,基于图像的自动化系统120可以响应于GUI110的用户利用鼠标光标(未示出)点击标记为"选项2"的单选按钮控件来接收GUI110的图像。基于图像的自动化系统120识别该鼠标光标并且识别在该鼠标光标下的标记为"选项2"的单选按钮控件。基于图像的自动化系统120然后将动作描述符输出到动作记录130。换句话说,如果该动作在图形对象中发生,则基于图像的自动化系统120将动作描述符输出到动作记录130。动作描述符描述动作。例如,动作描述符可以包括动作的描述和相对于其执行那个动作的图形对象的描述。换言之,动作描述符描述动作和在基于图像的自动化系统120的重放阶段期间在其中执行那个动作的图形对象。
动作记录130是存储动作描述符的文件或者其它数据储存库。例如,动作记录130可以是在重放阶段期间基于图像的自动化系统120可访问的脚本文件。即,动作描述符可以作为脚本文件内的指令(即,动作记录130)被存储,并且基于图像的自动化系统120可以访问那些指令来在重放阶段期间对GUI110执行动作。
在其它实施方式中,基于图像的自动化系统120接收该动作的通知、该动作(例如,相对于计算装置的显示器)的位置、访问GUI110的图像、识别非常接近于光标的图形对象以及确定是否在图形对象中发生该动作。换句话说,基于图像的自动化系统120从托管基于图像的自动化系统120的计算装置的操作系统接收该动作的位置而不是定位输入指示器的场所或者位置。作为特定的示例,该动作的通知还可以包括诸如关于输出装置的一对笛卡尔或者极坐标的位置标识符,该输出装置是诸如输出或者显示识别发生该动作的场所或者位置的GUI110的显示器。替换地,例如,位置标识符可以与GUI110有关而非与显示GUI110的输出装置有关。如果在图形对象中发生该动作,则基于图像的自动化系统120将动作描述符输出到动作记录130。
图2是根据一种实施方式的重放阶段中的基于图像的自动化系统的例示。如图2所示,基于图像的自动化系统120访问或者接收动作描述符130并且响应于或者基于动作描述符130来相对于GUI110(或者GUI110的图形对象)执行动作。
更具体地说,如图2所示,基于图像的自动化系统120访问动作描述符并且响应于通过指示器241所示的那个动作描述符来选择单选按钮组控件111的标记为"选项2"的单选按钮控件。更具体地说,基于图像的自动化系统120响应于访问该动作描述符来访问GUI110的图像,并且基于动作描述符的标记为"选项2"(图形对象)的单选按钮控件的描述来识别标记为"选项2"的单选按钮控件。基于图像的自动化系统120然后确定标记为"选项2"的单选按钮控件的位置。例如,基于图像的自动化系统120可以确定标记为"选项2"的单选按钮控件相对于托管GUI110的计算装置的显示器或者帧缓存器或者相对于GUI110的位置。作为特定的示例,基于图像的自动化系统120可以将标记为"选项2"的单选按钮控件的位置确定为来自托管GUI110的计算装置的显示器或者帧缓存器,或者GUI110的右上角、左上角或者其它的基准点的许多水平像素和许多垂直像素。
基于图像的自动化系统120然后在标记为"选项2"的单选按钮控件的位置处执行动作。例如,该动作描述符可以包括动作的描述,并且基于图像的自动化系统120在标记为"选项2"的单选按钮控件的位置处执行那个动作。作为特定的示例,该动作可以是选择标记为"选项2"的单选按钮控件的单击动作。即,基于图像的自动化系统120单击(或者生成或者执行单击动作)标记为"选项2"的单选按钮控件。例如,基于图像的自动化系统120通过经由操作系统的应用编程接口(application programming interface,"API")向托管GUI110的操作系统提供事件(或者与该事件相关联的信息),可以在先前由基于图像的自动化系统120识别的标记为"选项2"的单选按钮控件的位置中触发与该单击动作有关的事件(例如,鼠标键按下事件和鼠标键释放事件)。
类似地,指示符242、243、244、245、246和247表示其它动作。即,基于图像的自动化系统120可以访问动作描述符130并且执行由GUI110中的指示符242、243、244、245、246和247示出的动作。指示符242示出在标记为"选择1"的复选框控件中的单击动作。类似地,指示符234示出在标记为"选择3"中的复选框控件中的单击动作。指示符244示出在编辑框控件114中的键盘动作(例如打字)。即,基于图像的自动化系统120利用GUI110的图像来识别编辑框控件114并且在编辑框控件114中执行一个或多个动作,以在编辑框控件114中输入文字。
指示符245和246分别示出在下拉列表控件113中的单击动作和在标记为"数值1"的选项中的单击动作。指示符247示出在按钮115中的单击动作。另外,动作描述符130可以包括与除了图2中示出的动作之外的动作相关的动作描述符(例如,包括诸如在图形物体上方或者两端移动鼠标光标、利用鼠标光标双击图形对象、在图形对象中、附近或者两端单击和拖曳运动、在图形对象被选择或者具有输入光标时的键盘事件以及高亮度显示图形对象)。
图3是根据一种实施方式的基于图像的自动化系统的示意性框图。基于图像的自动化系统300包括结构分析模块310、语义(semantic)分析模块320以及时域(temporal)分析模块330。尽管结构分析模块310、语义分析模块320以及时域分析模块330作为基于图像的自动化系统300的分离模块被示出,一个模块的功能、操作或者特征可以在另一个模块中执行或者包括在另一个模块中。例如,时域分析模块330的一些功能、操作或者特征可以在语义分析模块320中执行或者被包括。结构分析模块310包括诸如处理器或者专用集成电路(application-specific integrated circuit,"ASIC")的硬件、存储在存储器中且在处理器中从存储器执行的软件或者它们的组合,以利用结构分析来识别图像内的图形对象。例如,结构分析模块310接收包括图形对象的图像,并且结构分析模块310基于图像的诸如边缘、阴影、形状和/或其它结构特征之类的结构特征来将该图像的部分识别为图形对象。
语义分析模块320包括诸如处理器或者专用集成电路("ASIC")之类的硬件、存储在存储器中且在处理器中从存储器执行的软件或者它们的组合,以利用语义分析来生成与图像的图形对象有关的语义信息。例如,语义分析模块320从描述那个图像的图形对象中提取语义信息。作为特定的示例,关于图形对象的语义信息可以包括在将图形对象识别为一组图形对象的部分(例如,图形对象是包括在单选按钮内的第一单选按钮)、包括图形对象的文字、包括在图形对象中的动作的描述、识别图形对象的类型或者类别或者包括图形对象的图像的语义描述内。
此外,语义分析模块320可以从包括图形对象的多个图像中生成与那个图形对象有关的语义信息。例如,语义分析模块320可以基于第一图像中的图形对象的外观来生成与图形对象有关的语义信息。语义分析模块320然后可以基于第二图像中的图形对象的外观来生成与图形对象有关的附加的、修订的或者细化的语义信息。作为特定的示例,语义分析模块320可以基于按钮没有被按下的图像来生成与该按钮有关的语义信息。例如,该按钮是特定的颜色。语义分析模块320然后可以基于按钮被按下的另一个图像来细化那个语义信息。例如,该按钮在按下时是不同的颜色。
时域分析模块330包括诸如处理器或者专用集成电路("ASIC")的硬件、存储在存储器中且在处理器中从存储器执行的软件或者它们的组合,以确定图形对象中的动作之间的关系。例如,时域分析模块330可以接收与图形对象有关的语义描述并且确定语义描述中的两个或更多个是否与普通图形对象和/或动作有关。作为特定的示例,动作可以包括两个或更多个其它动作或者子动作或者以两个或更多个其它动作或者子动作为基础,并且时域分析模块330可以确定多个子动作是否应该被合成为关于图形对象的动作。换言之,时域分析模块330确定多个动作是否与图形对象中的普通动作相关或者是普通动作的部分。
作为特定的示例,时域分析模块330可以响应于图形对象中的鼠标键按下动作来接收第一语义描述并且可以响应于图形对象中的鼠标键释放动作来接收第二语义描述。时域分析模块330然后基于例如第一语义描述和第二语义描述的时间接近度来确定第一语义描述和第二语义描述说明单个单击动作的两个部分,并且将第一语义描述和第二语义描述合成为第三语义描述。第三语义描述包括单击动作的描述而不是鼠标键按下动作和鼠标键释放动作的描述。
另外,时域分析模块330可以将更多或者不同的语义描述合成为说明单个动作的语义描述。例如,时域分析模块330可以将鼠标键按下动作的语义描述、鼠标移动动作的语义描述以及鼠标键释放动作的语义描述合成为相对于图形对象的单击并拖动动作的语义描述。替换地,例如,时域分析模块330可以确定响应于在图形对象中的鼠标键按下动作所接收的第一语义描述是完整的或者分离的动作,并且可以基于第一语义描述来输出动作描述符。作为特定的示例,如果在预定或者预选的时间段内没有接收到其它与图形对象有关或者关联的语义描述,则时域分析模块330可以确定响应于在图形对象中的鼠标键按下动作所接收的第一语义描述是完整的或者分离的动作。
图4是根据一种实施方式的托管基于图像的自动化系统的计算装置的示意性框图。如图4所示,基于图像的自动化系统433被托管(即,实施为在计算装置400中执行时使计算装置400或者处理器410执行例如在本文中讨论的基于图像的自动化系统的处理或者功能)在计算装置400中。因此,计算装置400在托管基于图像的自动化系统433时可以被称为基于图像的自动化系统。
如图4所示,计算装置400包括通信接口模块420、处理器410、存储器430以及非易失性(即非瞬时)处理器可读介质440。处理器410操作地连接到通信接口模块420、存储器430和非易失性处理器可读介质440。
处理器410是多种处理器中的任意处理器。例如,处理器410可以是通用处理器或者专用处理器并且可以作为硬件和/或托管在硬件中的软件被实施。硬件例如是微处理器、微型控制器、专用集成电路("ASIC")、诸如现场可编程门阵列("FPGA")之类的可编程逻辑器件("PLD")和/或执行操作的其它电路。软件例如是处理器可执行指令、命令、代码、固件、和/或存储在存储器中并且在处理器中执行(或者托管)的编制程序。软件可以利用诸如JavaTM、C++C、汇编语言、硬件描述语言和/或别的合适的程序设计语言来定义。例如,处理器410可以是托管在包括微处理器和存储器的计算机服务器中的虚拟机。
在一些实施方式中,处理器410可以包括多个处理器。例如,处理器410可以是包括多个处理引擎(例如,计算,算法的或者线程核)的微处理器。作为另一个示例,处理器410可以是包括具有共享时钟、存储器总线、输入/输出总线和/或其它共享资源的多个处理器的计算装置。此外,处理器410可以是分布式处理器。例如,处理器410可以包括多个计算装置,每个计算装置包括处理器,多个计算装置经由诸如计算机网络的通信链路相互通信。
存储器430可以是与处理器410分离的或者可以是外部的并且是处理器可访问的。通常,如图4所示,存储器430包括定义软件应用的处理器可执行指令或者代码(例如,计算机代码或者目标代码),这些软件应用在计算装置410的操作期间由处理器410执行或者托管在处理器410中。例如,存储器430可以是包括定义操作系统431、设备驱动程序432、基于图像的自动化系统433以及软件应用434的处理器可执行指令(即,定义软件应用的处理器可执行指令)的随机存取存储器("RAM")。软件应用434可以包括通过基于图像的自动化系统433来自动化的一个或多个软件应用(例如,基于图像的自动化系统433相对于其执行动作)。换句话说,在存储器430中并且在处理器410中执行的操作系统431、设备驱动程序432、基于图像的自动化系统433以及软件应用434托管在计算装置400中(或者在处理器410中)。
通常,操作系统431、设备驱动程序432、基于图像的自动化系统433、软件应用434和/或数据值也存储在非易失性处理器可读介质440中。在一些实施方式中,处理器410在初始化或者计算装置400的启动序列期间将操作系统431、设备驱动程序432、基于图像的自动化系统433、软件应用434和/或数据值传送到或者加载到存储器430中,并且操作系统431、设备驱动程序432、基于图像的自动化系统433、软件应用434和/或数据值在计算装置400的操作期间在存储器430中被访问或者从存储器430执行。即,非易失性处理器可读介质440可以作为用于在存储器430中的计算装置400的操作期间所存储的处理器可执行代码或者指令、数据值和/或其它信息的持续或者非瞬态数据存储器。因此,存储器430和非易失性处理器可读介质440可以统称为计算装置400的存储器。
处理器可读介质是可以由处理器访问的介质。例如,处理器可读介质是处理器410可以在其中读取信息(例如处理器可执行指令或者数据值)的装置。处理器可读介质的示例包括但是不限于:诸如硬盘、软盘和/或磁带的磁存储介质;诸如光盘("CD")、数字视频盘("DVD")、光盘只读存储器("CD-ROM")和/或全息照相装置的光存储介质;磁光存储介质;诸如只读存储器("ROM")、可编程序只读存储器("PROM")、可擦除可编程只读存储器("EPROM")、电可擦可编程只读存储器("EEPROM")和/或闪速存储器的非易失性存储器以及RAM。换句话说,处理器可读介质是处理器410可以从其中访问信息(例如,处理器可执行指令或者代码和/或数据值)的装置。因此,非易失性处理器可读介质440是处理器可读存储器并且存储器430也是处理器可读介质。
在一些实施方式中,基于图像的自动化系统433可以从诸如DVD或者CD之类的处理器可读介质中被安装或者加载到计算装置400中。作为示例,基于图像的自动化系统433可以包括在DVD中的安装包(未示出)内。该DVD可以插入在计算装置400中,并且处理器410可以执行该安装包,以在计算装置400中安装基于图像的自动化系统433。替换地,例如基于图像的自动化系统433可以从包括诸如USB闪速驱动器或者USB硬盘驱动器之类的USB接口的处理器可读介质、或者经由通信链路和通信接口模块420在计算装置400可访问的处理器可读介质中来被安装或者加载。
处理器可执行代码或者指令(例如,计算机代码或者指令)的示例包括但是不限于诸如步长编译器所生成的微代码或者微指令、机器指令以及利用解释器通过计算机执行的包括更高级的指令的文件。例如,实施可以利用JavaTM、C++、脚本解释器或者其它面向对象的程序设计语言以及开发工具来被实现或者实施。处理器可执行代码的附加示例包括但是不限于脚本指令、加密代码以及压缩代码。
非易失性处理器可读介质440例如可以是在包括从诸如DVD或者CD之类的另一个处理器可读介质加载或者复制到非易失性处理器可读介质440的软件的计算装置400内的硬盘。在一些实施中,非易失性处理器可读介质440可以在计算装置400外部或者从计算装置400可拆卸的。例如,非易失性处理器可读介质440可以包括通用串行总线TM("USB")接口(或者接口模块)并且非易失性处理器可读介质440可以是具有USB接口的闪速存储装置。在其它实施中,非易失性处理器可读介质440可以与处理器410集成。
在又一其它实施中,非易失性处理器可读介质440可以远离计算装置400并且计算装置400可以经由通信链路(例如计算机网络)来访问非易失性处理器可读介质440。作为特定的示例,非易失性处理器可读介质440可以是(或者处于)经由操作地连接到通信接口模块420的通信链路可访问的数据存储器或者数据存储服务。计算装置400可以通过将处理器可执行代码或者指令经由通信接口模块420从非易失性处理器可读介质440复制到存储器430并且在处理器410中执行处理器可执行代码或者指令来启动。
通信接口模块420是处理器410可访问的接口,以经由通信链路与其它处理器和/或计算装置通信(即,将表示数据的符号发送到其它处理器和/或计算装置以及从处理器和/或计算装置接收这种标记)。在一些实施方式中,基于图像的自动化系统433经由通信接口模块420输出与基于图像的软件自动化有关的信息。更具体地说,通信接口模块420可以从处理器410接收数据并且经由诸如网络电缆、局域网("LAN")或者因特网之类的通信链路发送表示那些数据的符号。例如,通信接口模块420可以是电话网络接口、双扭线网络接口、同轴网络接口、光纤网络接口、诸如无线局域网("WLAN")或者蜂窝网络之类的无线网络接口和/或其它的网络或者通信接口模块。
在一些实施方式中,计算装置400可以包括附加的模块或者部件。例如,计算装置400可以包括向显示器提供信号来将信息关系输出到基于图像的软件自动化的图形接口模块(未示出)。即,计算装置400可以输出例如GUI、工作参数或者统计数值误差条件或者与基于图像的软件自动化有关的其它信息。
图5是根据另一种实施方式的基于图像的自动化系统的示意性框图。基于图像的自动化系统500与基于图像的自动化系统300相似并且包括分别与以上相对于图3讨论的结构分析模块310、语义分析模块320以及时域分析模块330相似的结构分析模块530、语义分析模块540以及时域分析模块550。另外,基于图像的自动化系统500包括指令解释器510、图像获取模块520以及动作生成模块560。此外,结构分析模块530、语义分析模块540以及时域分析模块550的附加的部件或者元件在图5中被示出。
指令解释器510包括诸如处理器或者专用集成电路("ASIC")之类的硬件、存储在存储器中并且来自存储器处理器中执行的软件或者它们的组合,以确定动作和该动作基于指令应该在其中执行的图形对象。正如以上讨论的,指令可以包括或者是基于在记录阶段期间由基于图像的自动化系统所生成的动作描述符。因此,指令解释器510可以确定动作和该动作应该基于在基于图像的自动化系统500中的更早时间所生成的动作描述符来在其中执行的图形对象。
另外,指令可以描述与在通过基于图像的自动化系统所生成的动作描述符中描述的动作或者图形对象不同的动作或者该动作应该在其中执行的图形对象。换言之,包括通过指令解释器510来解释的指令的脚本可以被编辑为改变动作和/或该动作应该在其中执行的图形对象。例如,指令可以编辑为将单击动作变为双击动作或者将图形对象变为复选框控件组中的第二复选框控件而不是复选框控件组中的第一复选框控件。此外,指令可以被编辑为改变在编辑框控件中键入的文字或者在具有与先前与那个动作有关(例如在共同的动作描述符)内的图形对象的文字的不同文字的图形对象中执行动作。因此,在基于图像的自动化系统500的重放期间在指令解释器510中解释的指令可以与在基于图像的自动化系统500或者另一个基于图像的自动化系统的记录阶段期间所生成的利用动作描述符所定义的指令不同。
图像获取模块520包括诸如处理器或者专用集成电路("ASIC")之类的硬件、存储在存储器中且在处理器处从存储器执行的软件或者它们的组合,以访问被自动化(基于图像的自动化系统500处于记录阶段)或者将被自动化(基于图像的自动化系统500处于重放阶段)的软件应用的图像。例如,图像获取模块520可以生成或者访问软件应用的GUI在其中输出的显示器的屏幕截图。在一些实施例中,图像获取模块520在基于图像的自动化系统500的外部。作为示例,图像获取模块520可以是托管基于图像的自动化系统500或者自动化软件应用的操作系统的屏幕截图实用程序或者服务。基于图像的自动化系统500可以与图像获取模块520通信来访问自动化软件应用的图像(例如,自动化软件应用的GUI的屏幕截图)。
如图5所示,结构分析模块530包括分割引擎531、光学字符识别("OCR")引擎532以及分类引擎533。分割引擎531是将图像例如经由图像获取模块520访问的图像)分割为候选的图形对象的模块(或者结构分析模块530的子模块)。例如,因为诸如GUI中的控件之类的图形对象被设计为视觉上突出或者与背景对照,分割引擎531可以利用例如候选的图形对象或者包括候选的图形对象的图像的界线、边界或者其它结构特征来识别图形对象。作为特定的示例,分割引擎531可以随时间的图像(或者图像的序列)的变化(例如,在输入光标在上方或者上面、选择(例如单击)、拖动、或者另外与图像的那部分交互时一部分图像的外观的变化)、边缘检测、分量分析以及其它图像分析方法来识别候选的图形对象(例如,图形的可能是图形对象的部分)。
类似地,OCR引擎532是识别图像内的文字(例如字母或者其它字符)的模块(或者结构分析模块530的子模块)。这个文字提供关于图像的部分的信息。例如,GUI的按钮控件常常包括表示那些按钮控件的功能的文字。因此,结构分析模块530可以使用关于在OCR引擎532中所生成的图像中的文字的信息来识别图形对象。在一些实施中,OCR引擎532向语义分析模块提供与图形对象有关的文字,以包括在图形对象的语义描述中。
分类引擎533是将候选的图形对象分类为各类图形对象的模块(或者结构分析模块530的子模块)。换句话说,候选的图形对象被提供给分类引擎533,并且分类引擎533指示候选的图形对象与图形对象的什么类型或类别(如果有的话)相关联。在候选的图形对象已经被划分为一类图形对象后,候选的图形对象可以被称为图形对象。
分类引擎533可以使用多种各种分类技术中的任意分类技术。例如,分类引擎533可以在受监视的训练环境或者无监视的训练环境中利用图形对象的训练组和图形对象的类别被训练。另外,分类引擎533可以使用支持矢量机(Support Vector Machine)、K-means聚类、Mean-Shift聚类或者GrabCut聚类分类技术。此外,分类引擎533可以利用图形对象的外观恒定标记来分类图形对象,以防止外观的变化(例如,缩放比例变化或者颜色变化)改变图形对象的分类。这种外观恒定标记可以是基于诸如随时间的图形对象中的变化(或者包括图形对象的图像的序列)的图形对象的梯度、变型、整数和/或其它分析。
语义分析模块540包括图像分析引擎541。图像分析图像541是分析用于与通过结构分析模块530识别的图形对象有关的语义信息的图像的模块(或者语义分析模块540的子模块)。即,图像分析引擎541解析或者分析图像来提取关于图形对象的描述性信息。例如,图像分析引擎541可以确定或者识别复选框按钮控件是复选框按钮控件组的部分,复选框按钮控件包括文字(例如,由OCR引擎532提供的文字),或者按钮控件是处于相对于另一个图形对象的位置中。正如以上讨论的,语义分析模块540生成包括关于图形对象和图形对象处的动作的描述性信息的图形对象的语义描述。
时域分析模块550包括动作识别模块551。动作识别模块551是时间上分析或者关联图形对象的语义描述来确定多个语义描述是否应该被合成为公共的语义描述的模块(或时域分析模块的子模块)。换句话说,动作识别模块551关联语义描述来确定语义描述是否描述在一个或多个图形对象处的动作的多个部分。如果该语义描述说明了在一个或多个图形对象中的动作的多个部分,则时域分析模块550在基于图像的自动化系统500输出用于那个动作的动作描述符前合成那些语义描述。如果该语义描述说明不同的动作,则基于图像的自动化系统500单独地输出用于那些动作的动作描述符。
动作执行模块560包括诸如处理器或者专用集成电路("ASIC")的硬件、存储在存储器中且在处理器中从存储器执行的软件,或者它们的组合以对图形对象执行动作。例如,动作执行模块560可以将基于在指令解释器510中所解释的指令所描述的动作的事件的描述提供给托管基于图像的自动化系统500或者自动化软件应用的操作系统的事件或者消息队列。作为特定的示例,动作执行模块560可以将包括图形对象的位置和动作的标识符的事件的描述提供给托管自动化软件应用的操作系统的消息队列。该操作系统然后在图形对象的位置中生成该动作。
在一些实施方式中,动作执行模块560响应于在指令解释器510中解释的单个指令来执行多个动作。例如,指令可以指定相对于图形对象的位置(或者相对于图形对象)的单击和拖动动作,并且动作执行模块560可以响应于该单击和拖动动作来执行鼠标键按下动作、一个或多个鼠标移动动作以及鼠标键释放动作。换句话说,例如,基于由动作识别引擎551所合成的多个动作的合成动作可以由动作执行模块560分解,以执行操作系统内的合成动作而不是支持该合成动作作为多个简单或者基本动作。
图6是根据一种实施方式的确定与图形对象有关的动作的方法的流程图。方法600可以作为硬件模块、作为托管在计算装置中的软件模块和/或作为硬件模块和软件模块的组合来被实施。例如,方法600可以作为专用电路或作为包括存储在存储器中并且在与存储器通信的处理器中执行的指令的软件模块来被实施。更具体地说,例如,方法600可以在基于图像的自动化系统中实施并且在记录阶段期间执行。
在块610中检测动作。例如,操作系统可以提供诸如鼠标光标的输入指示器的移动、鼠标单击发生或者诸如键按下动作或者键释放动作之类的动作的通知。在一些实施方式中,该通知包括指示参照例如显示器、图形或者屏幕缓存器或者GUI的动作的位置的位置标识符。替换地,例如,实施方法600的基于图像的自动化系统可以通过追踪或者监测从显示装置或者图形缓存器所访问的图像中的输入光标并且基于那些图像或者图形对象中的变化确定动作已经发生来检测动作。例如,如果该输入光标已经移动或者改变两个或更多个图像中的外观,则基于图像的自动化系统可以确定动作已经发生。作为另一个示例,如果图形对象的外观在外表上已经改变,则基于图像的自动化系统可以确定动作已经发生。作为特定的示例,如果按钮控制变换成按下状态,则基于图像的自动化系统可以确定单击动作已经发生。
在检测该动作后,在块620中识别图像(例如,响应于该动作的检测所获取的或者访问的图像)内的图形对象。在一些实施方式中,整个图像被解析或者分析来识别图像内的所有图形对象。在其它实施方式中,一部分图像被解析或者分析来识别图像内的那部分的图形对象。例如,可以分析离该动作预先确定或者所选择的距离内的一部分图像来识别图形对象。
作为示例,可以如块621-623中所示来识别图像内的图形对象。在块621中利用各种图像分析技术来识别候选的图形对象。例如,实施方法600的基于图像的自动化系统可以包括识别候选的图形对象的分割引擎,该分割引擎基于随时间的图形对象(或者包括图形对象的图像的序列)中的变化、边缘检测、分量分析或者其它图像分析技术来识别候选的图形对象。另外,例如,实施方法600的基于图像的自动化系统可以包括基于文字(例如,候选图形对象中的字母、词、数字或者其它标记)来识别图形对象的OCR引擎。
然后在块622中对候选图形对象分类。换句话说,在块622中做出候选图形对象是否是图形对象(例如,如果有的话,候选图形对象属于图形对象的哪种类别)的确定。例如,实施方法600的基于图像的自动化系统可以包括支持矢量机(Support Vector Machine)、K-means聚类、Mean-Shift聚类或者GrabCut聚类或者其它分类技术的分类引擎。
在块622中对候选图形对象分类后,方法600进行到块623,以确定图像内的图形对象的识别是否完成。即,在块623中确定是否已经识别图像中的图形对象。在一些实施方式中,在分析或者解析整个图像后图像内的图形对象的识别完成。在其它实施方式中,在分析或者解析相距动作的位置预定或者预选的接近度的一部分图像后,图像内的图形对象的识别完成。如果在块623中图像内的图形对象的识别完成,则方法600进行到块630。替换地,如果在块623中图像内的图形对象的识别没有完成,则方法600进行到块621来识别另一个候选图形对象。
在块630中然后确定该动作在其中发生的图形对象。换言之,在块630中确定该动作相对于其发生的图形对象。例如,从块620中所识别的图形对象中选择定义该动作其中发生的位置被包括在其中的区域(例如,图形对象的边缘)的区域的图形对象。
然后在块640中生成用于该动作在其中发生的图形对象的语义信息。换句话说,在块640中生成与该动作在其中发生的图形对象有关的描述性信息。例如,实施方法600的基于图像的自动化系统的语义分析模块的图像分析引擎可以分析接近图像内的图形对象的位置的一部分图像来确定该图形对象是否包括在一组图形对象内或者另一个图形对象的部分内。作为示例,图形对象可以是混合的图形对象(例如,包括多个图形对象的图形对象)的单元。作为另一个示例,诸如GUI的单选按钮控件的图形对象可以包括在单选按钮控件组或者群内,并且在块640中可以识别该单选按钮控件组和包括在单选按钮控件组内的其它单选按钮控件。
另外,在块640中可以从图像或者图形对象中提取关于图形对象的其它信息。例如,可以从图像中提取图形对象的图像(例如,位图表示)、来自图形对象的文字、一组图形对象内的图形对象的标识符或者描述(例如复选框控件组中的第三复选框控件)或其它信息。与在块640中所生成的与图形对象有关的信息然后可以存储在动作描述符中。另外,在块610中所检测的该动作的描述和图形对象的类别的标识符可以包括在动作描述符内。
在一些实施中,实施方法600的基于图像的自动化系统可以与另一个软件自动化系统一起工作。换句话说,软件应用可以利用基于图像的自动化系统和例如像依赖于软件应用的运行时环境的软件自动化系统之类的另一个软件自动化系统来被自动化。基于图像的自动化系统例如在块640后可以从另一个软件自动化系统接收附加的语义信息或者其它信息。另外,基于图像的自动化系统可以向另一个软件自动化系统提供语义信息或者其它信息。换句话说,基于图像的自动化系统可以与另一个软件自动化系统协作来使软件应用自动化。
在块650中确定与(例如,发生在或者相对于)图形对象关联的动作。换言之,实施方法600的基于图像的自动化系统确定在该图形对象中发生什么动作。例如,在实施方法600的基于图像的自动化系统中的时域分析模块的动作识别引擎可以访问动作描述符,例如具有关于图形对象和在块610中所检测的动作的信息的诸如在块640中所生成的或者增加的动作描述符。
动作识别引擎还可以响应于更早或者在前的动作所生成的其它动作描述符,并且确定响应于其生成动作描述符的每个动作是否与分离或者独立的动作有关。即,动作识别引擎可以确定促使动作描述(例如,在块610中所检测的动作)的生成的动作是否是应该为稍后的重放被存储(例如,为了在基于图像的自动化引擎的重放或者自动化阶段中使用)的动作,或者是否是复合动作(例如,包括诸如单击和拖动动作的多个动作的动作)的部分或者单元。
如果动作是分离的动作,则在块660可以存储包括那个动作和该动作在其中(或者相对于其)发生的图形对象的描述的动作描述符。例如,该动作描述符可以作为指令被输出到自动化脚本(例如文件)。如果该动作不是分离的动作,则可以访问其它动作描述符来确定那个动作是否是复合动作的单元。例如,相对于共同图形对象的多个动作可以定义复合动作。如果该动作描述符是复合动作的单元,则包括那个动作的描述的该动作描述符可以被存储或者缓存在动作识别引擎中。如果该动作描述符是复合动作的最终或者结束单元,则在块660中可以生成和存储(例如,作为自动化脚本的指令输出)包括图形对象(或者多个图形对象)和相对于该图形对象(或者多个图形对象)发生动作(或者多个动作)的描述的新的动作描述符(或者一组动作描述符)。
在一些实施方式中,块650可以受时间限制。例如,描述是或者可能是复合动作的单元的动作描述符可以在预定或者预选的时间段被缓存。如果在预定或者预选的时间段没有完成通过那些动作描述符所描述的动作的复合动作(例如,在动作识别引擎中没有接收用于那个复合动作的描述结束动作的动作描述),则那些动作描述符作为自动化脚本的指令被输出。
方法600可以包括比图6中示出的那些更多或更少的块。另外,可以将方法600的一个或多个块重新排列。例如,可以为块620中识别的每个图形对象生成语义信息并且在语义信息生成后可以确定该动作在其中发生的图形对象。换句话说,可以将块630和640重新排列。作为另一个示例,可以将块630和640重新排列。更具体地说,例如,实施方法600的基于图像的自动化系统可以识别导致下拉列表打开的单击动作。随后,基于图像的自动化系统可以识别下拉列表中的项的选择作为按钮。例如在块650中,基于图像的自动化系统可以确定这个序列不被允许(例如,因为下拉列表没有包括按钮)。方法600然后可以返回到例如块620或者块640,以将下拉列表中的项重新分类,或者返回到块640来生成用于下拉列表中的项的不同的语义信息。此外,尽管以上讨论关于记录阶段中的基于图像的自动化系统内的示例环境的方法600,但是方法600在其它环境内也适用。
图7是根据一种实施方式的执行与图形对象有关的动作的方法的流程图。方法700可以作为硬件模块、作为托管在计算装置中的软件模块和/或作为硬件模块和软件模块的组合来被实施。例如,方法700可以作为专用电路或者作为包括存储在存储器中并且在与存储器通信的处理器中执行的指令的软件模块来被实施。更具体地说,例如,方法700可以在基于图像的自动化系统中实施并且在重放或者自动化阶段期间执行。
在块710中访问描述动作的指令。例如,在块710中可以访问在自动化脚本(例如、在处理器可读介质中的文件)中的指令。该指令包括动作和该动作应该在其中执行的图形对象的描述。在一些实施方式中,可以分别地描述动作和图形对象。例如,指令可以包括动作的标识符和该动作应该在其中执行的图形对象的描述的参考。基于该参考可以在不同的文件或者数据存储器(例如数据库)中访问图形对象的描述。
在块720中然后在图像中定位图形对象。例如,在块720中可以访问与自动化软件应用有关的GUI的图像。在一些实施方式中,利用与相对于图中示出的方法600的块620和640的如上所述的那些类似的图像分析技术在块720中定位图像中的图形对象。更具体地说,如图7所示,块720可以包括在块721中的图像的结构分析和在块722中的图像的语义分析。
作为特定的示例,实施方法700的基于图像的自动化系统可以包括结构分析模块,以在块721中识别图像内的图形对象。例如,结构分析可以基于图像的结构特征来识别图形对象。更具体地说,例如,图形对象可以基于图像内的边界、图像内的色差、图像内的梯度、随时间的图像的特征的变化的检测、分量分析或者其它技术来被识别,以识别候选图形对象。另外,例如,结构分析可以基于文字(例如,候选图形对象中的字母、词、数字或者其它标记)来识别图形对象。
此外,可以通过结构分析来对图形对象分类。换句话说,结构分析可以包括确定图形对象属于那种类别(如果有的话)的图形对象的。例如,结构分析可以基于支持矢量机、K-means聚类、Mean-Shift聚类、GrabCut聚类、随时间的图形对象(或者包括图形对象的图像的序列)的变化或者其它分类技术来使用分类引擎。作为特定的示例,图形对象所属的图形对象的类别的标识符可以针对图像中的每个图形对象或图像中的一部分的每个图形对象来生成。
在块721中所识别的图形对象可以在块722中进一步被分析,以从图像中提取与那些图形对象有关的语义信息。例如,可以在块722中的语义分析期间,针对图形对象生成与包括图形对象的一组图形对象有关的信息、图形图像的图像(例如,位图表示)、来自图形对象的文字、相对或者绝对的例如关于图像或者其它图形对象)的位置信息和/或关于图形对象的其它描述性信息。
另外,在块721和722中所生成的信息可以在块720中使用,以识别或者定位通过指令所描述的图像中的图形对象。即,在块720中选择或者确定在指令中所描述的动作应该在其中执行的图形对象。例如,关于图像中的图形对象的在块721和722中所生成的信息可以与指令中的图形对象的描述相比较。例如,在指令中所描述的图形对象的类别的标识符可以与在块721和722中识别的图形对象的类别的标识符相比较;在指令中所描述的图形对象的图像可以与在块721和722中识别的图形对象的图像相比较;来自指令中所描述的图形对象的文字可以与来自块721和722中识别的图形对象的文字相比较;以及关于指令中所描述的图形对象的相对位置的信息可以与用于块721和722中识别的图形对象的类似信息相比较。
正如以上讨论的,在一些实施方式中,实施的基于图像的自动化系统可以与另一个软件自动化系统协作。例如,实施方法700的基于图像的自动化系统可以在例如块720中从另一个软件自动化系统接收附加的语义信息或者其它信息,以定位图形对象。另外,基于图像的自动化系统可以向另一个软件自动化系统提供语义信息或者其它信息。
在定位指令中所描述的图形对象后,在块730中在图形对象中执行指令中所描述的动作。换言之,实施方法700的基于图像的自动化系统使该动作在块720中所定位的图形对象中执行。作为特定的示例,与指令中所描述的动作关联的操作系统事件或者动作(例如鼠标键按下事件)的事件描述符被提供给在托管自动化软件应用的计算装置中的操作系统的事件或者消息队列。事件描述符可以包括与该动作关联的事件和在计算装置的显示器中的图形对象的位置(例如,X坐标和Y坐标)的标识符。该操作系统然后可以在图形对象处生成该动作。
如果在块740中具有更多指令,则方法700进行到块710来访问另一个指令。如果没有更多指令(例如,自动化程序对于自动化软件应用是完成的),则方法700完成。
方法700可以包括比图7中示出的那些多或者少的块。另外,可以将方法700的一个或多个块重新排列。此外,尽管以上讨论关于记录阶段中的基于图像的自动化系统内的示例环境的方法700,但是方法700在其它环境内也适用。
图8是根据一种实施方式的包括处理器和存储介质的系统的示意性框图。如图8所示,系统包括操作地连接到存储介质821、存储介质822以及存储介质823的一个或多个处理器810。一个或多个处理器810可以访问在存储介质821、存储介质822以及存储介质823中的指令或者代码。存储介质821、822以及823可以是任何处理器可读介质和/或访问处理器可读介质的相关装置。例如,存储介质821可以是包括磁存储介质的硬盘驱动器,存储介质822可以是诸如DVD驱动器的光驱并且可以接收诸如实施报告生成工具的处理器可读指令的处理器可读指令可以在其上存储的DVD存储介质,以及存储介质823可以是具有通用串行总线("USB")接口的闪速存储器驱动器。在一些实施中,存储介质821、822和/或823可以相对一个或多个处理器810是本地的(例如,连接到公共的计算装置)。在一些实施中,存储介质821、822和/或823可以相对一个或多个处理器810是远程的(例如,连接到分离的计算装置并且经由通信链路与一个或多个处理器810通信。此外,一个或多个存储介质821、822和/或823可以是相对一个或多个处理器810是本地的并且其余的存储介质821、822和/或823中的一个或多个可以是相对一个或多个处理器810是远程的。
作为更多特定的示例,一个或多个处理器810可以包括在诸如托管基于图像的自动化模块的计算装置之类的计算装置内,该计算装置具有由存储介质821表示的内部硬盘驱动数据存储器和由存储介质822表示的诸如安全数字高容量("SDHC")存储卡的固态数据存储器。计算装置还可以包括与由存储介质823表示的USB闪速存储驱动器通信的USB主机控制器。一个或多个处理器810可以访问诸如实施在存储介质821,822和/或823中的任一个之类的操作系统、诸如基于图像的自动化系统和/或自动化软件应用之类的软件应用的处理器可执行指令之类的处理器可执行指令。换言之,一个或多个处理器810可以解释或者执行处理器可读介质(例如,在存储介质821、存储介质822和/或存储介质823中)中的指令。例如,计算装置可以执行存储在远程的存储介质中的基于图像的自动化系统。
替换地,例如,存储介质821和822可以相对于包括一个或多个处理器810的计算装置是远程的并且存储介质823可以相对于那个计算装置是本地的。包括一个或多个处理器810的计算装置可以经由诸如通信网络的通信链路从远程的存储介质821或者822中的一个或者两者将基于图像的自动化系统下载到本地的存储介质823并且从本地的存储介质823执行基于图像的自动化系统。
在一些实施方式中,系统800可以包括诸如RAM之类的一个或多个存储器,该一个或多个存储器作为用于在存储介质821、存储介质822和/或存储介质823中的一个或多个存储(或者可访问的)指令或者代码的存储介质821、存储介质822、和/或存储介质823中的一个或多个和一个或多个处理器810之间的缓存。
虽然以上已经示出和描述了某些实施,但是可以在形式和细节中做出各种改变。例如,已关于一种实施方式和/或处理描述的一些特征可以与其它实施方式有关。换句话说,关于一种实施方式所描述的处理、特征、部件和/或特性可用于其它实施方式中。作为特定的示例,关于图形用户界面、图形用户界面的控件和/或软件自动化所讨论的实施方式适用于其它环境。作为另一示例,关于特定的模块、引擎或者单元的以上讨论的功能可以包括在其它实施方式中的不同的模块、引擎或者单元中。此外,要理解的是,在本文中所描述的系统和方法可以包括所描述的不同实施方式的部件和/或特征的不同组合和/或子组合。因此,关于一个或多个实施方式所描述的特征可以与在本文中所描述的其它实施方式结合。
Claims (14)
1.一种基于图像的自动化方法,包括:
访问用于描述动作和图形对象的动作描述符,其中所述动作相对于在显示器上显示的图形用户界面上的所述图形对象被执行;
在所述图形用户界面的第一图像中识别所述图形对象,所述图形对象在所述第一图像中具有第一外观;基于所述第一外观生成与所述图形对象有关的第一语义信息;
在所述图形用户界面处相对于所述图形对象执行所述动作;
在所述图形用户界面的第二图像中识别所述图形对象,其中,响应于所述动作的执行,所述图形对象的外观被改变,所述图形对象在所述第二图像中具有第二外观;基于所述第二外观生成与所述图形对象有关的第二语义信息;以及
将所述第一语义信息和第二语义信息合成为说明单个动作的第三语义信息。
2.如权利要求1所述的基于图像的自动化方法,其中所述识别包括对所述图像进行结构分析以识别所述图形对象的结构特征,以及对所述图像进行语义分析以识别图形对象中的文本。
3.如权利要求1所述的基于图像的自动化方法,其中所述动作是第一动作,并且所述动作描述符描述包括所述第一动作和第二动作的复合动作,所述方法还包括:
相对于所述图形对象执行所述第二动作,所述第一动作和所述第二动作与所述复合动作关联。
4.如权利要求1所述的基于图像的自动化方法,其中:
所述图形对象是复合图形对象的单元;以及
所述识别包括识别所述复合图形对象。
5.一种基于图像的自动化系统,包括:
用于识别第一图像和第二图像内的图形对象的结构分析模块;其中,所述图形对象在所述第一图像中具有第一外观;响应于在图形用户界面处相对于所述图形对象执行的动作,所述图形对象的外观被改变;所述图形对象在所述第二图像中具有第二外观;
用于生成与所述图形对象有关的语义信息的语义分析模块;其中,基于所述第一外观生成与所述图形对象有关的第一语义信息;基于所述第二外观生成与所述图形对象有关的第二语义信息;以及
用于基于所述第一语义信息与第二语义信息的时间接近度确定所述动作是否与所述图形对象关联并且基于所述第一语义信息与第二语义信息定义用于描述所述动作和所述图形对象的动作描述符的时域分析模块。
6.如权利要求5所述的基于图像的自动化系统,其中所述结构分析模块包括用于基于所述图像的结构特征来识别所述图形对象的分割引擎。
7.如权利要求5所述的基于图像的自动化系统,其中所述结构分析模块包括用于对所述图形对象进行分类的分类引擎。
8.如权利要求5所述的基于图像的自动化系统,其中所述动作是第一时间中的第一动作并且所述图形对象是图形用户界面的控件,还包括:
图像获取模块,所述图像获取模块用于响应于所述第一时间后的第二时间中的第二动作来访问所述图像,所述第二动作在所述图形对象处。
9.如权利要求5所述的基于图像的自动化系统,其中:
所述动作是第一时间中所述图形对象处的第一动作;
所述结构分析模块配置为响应于所述第一时间后的第二时间在所述图形对象处的第二动作来识别所述图形对象;
所述语义分析模块配置为响应于所述第二动作在所述第二时间后细化所述语义信息;以及
所述时域分析模块配置为确定所述第一动作与所述图形对象关联,并且基于所述语义信息来定义动作描述符。
10.一种基于图像的自动化方法,包括:
响应于动作在图形用户界面处相对于图形对象的执行来识别所述图形用户界面的第一图像和第二图像中的图形对象;其中,所述图形对象在所述第一图像中具有第一外观;响应于所述动作的执行,所述图形对象的外观被改变,所述图形对象在所述第二图像中具有第二外观;
生成与所述图形对象关联的语义信息;其中,基于所述第一外观生成与所述图形对象有关的第一语义信息;基于所述第二外观生成与所述图形对象有关的第二语义信息;以及
存储用于描述所述动作并且包括所述第一语义信息与第二语义信息的动作描述符。
11.如权利要求10所述的基于图像的自动化方法,其中所述动作是第一动作,所述方法还包括:
确定第二动作与所述图形对象关联;以及
基于所述第一动作和所述第二动作来定义所述动作描述符。
12.如权利要求10所述的基于图像的自动化方法,其中所述动作描述符作为脚本文件中的指令被存储。
13.如权利要求10所述的基于图像的自动化方法,还包括:
确定所述动作发生在所述图形对象处。
14.如权利要求10所述的基于图像的自动化方法,其中所述语义信息包括所述动作的描述和所述图形对象的描述。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/035562 WO2012154159A1 (en) | 2011-05-06 | 2011-05-06 | Image-based automation systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103502936A CN103502936A (zh) | 2014-01-08 |
CN103502936B true CN103502936B (zh) | 2018-02-06 |
Family
ID=47139435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180070362.2A Expired - Fee Related CN103502936B (zh) | 2011-05-06 | 2011-05-06 | 基于图像的自动化系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10088969B2 (zh) |
EP (1) | EP2705427A4 (zh) |
CN (1) | CN103502936B (zh) |
WO (1) | WO2012154159A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6247182B2 (ja) * | 2014-09-08 | 2017-12-13 | 日本電信電話株式会社 | 操作手順記録装置、操作手順記録方法及び操作手順記録プログラム |
US10261658B2 (en) * | 2014-10-28 | 2019-04-16 | Adobe Inc. | Automating user operations using screen shots and file names |
CN104572123B (zh) * | 2015-01-27 | 2019-05-14 | Oppo广东移动通信有限公司 | 一种脚本生成方法及装置 |
US9804955B2 (en) | 2015-07-28 | 2017-10-31 | TestPlant Europe Limited | Method and apparatus for creating reference images for an automated test of software with a graphical user interface |
US10884723B2 (en) * | 2016-01-21 | 2021-01-05 | Facebook, Inc. | Modification of software behavior in run time |
US11288169B2 (en) * | 2016-11-10 | 2022-03-29 | Eggplant Limited | Method of, and apparatus for, handling reference images for an automated test of software with a graphical user interface |
US11205103B2 (en) | 2016-12-09 | 2021-12-21 | The Research Foundation for the State University | Semisupervised autoencoder for sentiment analysis |
US10409712B2 (en) * | 2016-12-30 | 2019-09-10 | Accenture Global Solutions Limited | Device based visual test automation |
WO2018150388A2 (en) * | 2017-02-19 | 2018-08-23 | Mehrdad Ghasemizadeh | A system and method for graphical programming |
KR20190071540A (ko) * | 2017-12-14 | 2019-06-24 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 서로 다른 사용자 인터페이스 플랫폼들에 기초한 사용자 인터페이스 화면 제공 |
CN108228421B (zh) * | 2017-12-26 | 2021-09-17 | 东软集团股份有限公司 | 数据监测方法、装置、计算机及存储介质 |
US10657035B2 (en) | 2018-04-13 | 2020-05-19 | Rainforest Qa, Inc. | Electronic product testing sysems |
CN108549608A (zh) * | 2018-04-18 | 2018-09-18 | 武汉极意网络科技有限公司 | 一种app的ui截图测试方法及系统 |
US10970098B2 (en) * | 2018-09-04 | 2021-04-06 | Edgeverve Systems Limited | Methods for sharing input-output device for process automation on a computing machine and devices thereof |
CN110390328B (zh) * | 2019-06-28 | 2022-11-22 | 联想(北京)有限公司 | 一种信息处理方法及设备 |
US10936351B2 (en) | 2019-07-19 | 2021-03-02 | UiPath, Inc. | Multi-anchor based extraction, recognition, and machine learning of user interface (UI) |
US11276206B2 (en) | 2020-06-25 | 2022-03-15 | Facebook Technologies, Llc | Augmented reality effect resource sharing |
US20220032471A1 (en) * | 2020-08-03 | 2022-02-03 | Automation Anywhere, Inc. | Robotic process automation using enhanced object detection to provide resilient playback capabilities |
US11301268B2 (en) | 2020-08-11 | 2022-04-12 | UiPath, Inc. | Graphical element detection using a combination of user interface descriptor attributes from two or more graphical element detection techniques |
US11507259B2 (en) * | 2020-09-08 | 2022-11-22 | UiPath, Inc. | Graphical element detection using a combined series and delayed parallel execution unified target technique, a default graphical element detection technique, or both |
US11232170B1 (en) | 2020-09-08 | 2022-01-25 | UiPath, Inc. | Application-specific graphical element detection |
US11573889B2 (en) * | 2020-11-10 | 2023-02-07 | Micro Focus Llc | Using graphical image analysis for identifying image objects |
US11868160B2 (en) * | 2022-02-09 | 2024-01-09 | Microsoft Technology Licensing, Llc | Just-in-time snap layouts |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0635797A1 (en) * | 1993-07-15 | 1995-01-25 | Siemens Corporate Research And Support, Inc. | A smart image system |
CN1382285A (zh) * | 1999-11-05 | 2002-11-27 | 摩托罗拉公司 | 图形书写识别用户界面 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2077324C (en) * | 1991-10-07 | 1997-06-24 | Michael R. Campanelli | Image editing system and method having improved automatic object selection |
US6310984B2 (en) | 1998-04-09 | 2001-10-30 | Hewlett-Packard Company | Image processing system with image cropping and skew correction |
GB2370438A (en) * | 2000-12-22 | 2002-06-26 | Hewlett Packard Co | Automated image cropping using selected compositional rules. |
CA2454290C (en) | 2003-12-29 | 2013-05-21 | Ibm Canada Limited-Ibm Canada Limitee | Graphical user interface (gui) script generation and documentation |
WO2006132564A1 (en) * | 2005-06-10 | 2006-12-14 | Intel Corporation | A cognitive control framework for automatic control of application programs exposing a graphical user interface |
EP1986229A1 (en) | 2007-04-27 | 2008-10-29 | S.O.I.T.E.C. Silicon on Insulator Technologies | Method for manufacturing compound material wafer and corresponding compound material wafer |
US20090199096A1 (en) * | 2008-02-04 | 2009-08-06 | International Business Machines Corporation | Automated gui test recording/playback |
US9141518B2 (en) | 2008-12-10 | 2015-09-22 | Microsoft Technology Licensing, Llc | GUI testing |
SE1250570A1 (sv) * | 2009-12-01 | 2012-06-29 | Cinnober Financial Technology Ab | Förfarande och system för automatisk test av datorprogram |
-
2011
- 2011-05-06 WO PCT/US2011/035562 patent/WO2012154159A1/en active Application Filing
- 2011-05-06 US US14/009,580 patent/US10088969B2/en active Active
- 2011-05-06 EP EP11865318.7A patent/EP2705427A4/en not_active Withdrawn
- 2011-05-06 CN CN201180070362.2A patent/CN103502936B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0635797A1 (en) * | 1993-07-15 | 1995-01-25 | Siemens Corporate Research And Support, Inc. | A smart image system |
CN1382285A (zh) * | 1999-11-05 | 2002-11-27 | 摩托罗拉公司 | 图形书写识别用户界面 |
Also Published As
Publication number | Publication date |
---|---|
US20140033091A1 (en) | 2014-01-30 |
WO2012154159A1 (en) | 2012-11-15 |
CN103502936A (zh) | 2014-01-08 |
US10088969B2 (en) | 2018-10-02 |
EP2705427A4 (en) | 2014-09-24 |
EP2705427A1 (en) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103502936B (zh) | 基于图像的自动化系统和方法 | |
US9448908B2 (en) | System and method for model based session management | |
CN104267947B (zh) | 一种编辑弹窗图片的方法及弹窗图片编辑装置 | |
CN102694966B (zh) | 一种全自动视频编目系统的构建方法 | |
US10762678B2 (en) | Representing an immersive content feed using extended reality based on relevancy | |
US9904517B2 (en) | System and method for automatic modeling of an application | |
CN108416003A (zh) | 一种图片分类方法和装置、终端、存储介质 | |
WO2021190078A1 (zh) | 短视频的生成方法、装置、相关设备及介质 | |
CN105446725B (zh) | 用于模型驱动开发的方法和系统 | |
CN104205062A (zh) | 剖析数据可视化 | |
KR101777238B1 (ko) | 영상 트렌드 검출 및 큐레이션을 위한 방법 및 시스템 | |
CN109344298A (zh) | 一种将非结构化数据转化为结构化数据的方法及装置 | |
CN110515896A (zh) | 模型资源管理方法、模型文件制作方法、装置和系统 | |
CN102902965B (zh) | 实现多目标跟踪的视频图像数据结构化描述处理的方法 | |
WO2023024649A1 (zh) | 图形渲染方法、装置及存储介质 | |
Sun et al. | Ui components recognition system based on image understanding | |
US20200089817A1 (en) | Composition Engine for Analytical Models | |
CN114416068A (zh) | 应用开发平台、微程序生成方法、设备及存储介质 | |
KR100901284B1 (ko) | 3d 모델 식별자를 이용한 랜더링 시스템 및 방법 | |
CN115546824B (zh) | 禁忌图片识别方法、设备及存储介质 | |
CN108780457A (zh) | 在稳健的视频搜索和检索机制内执行多个查询 | |
EP3051468A1 (en) | A graphical user interface for temporal representation of structured information in an object model | |
KR102444172B1 (ko) | 영상 빅 데이터의 지능적 마이닝 방법과 처리 시스템 | |
WO2023273828A1 (zh) | 界面管理方法、装置、设备及可读存储介质 | |
CN112370789B (zh) | 模型三角形网格合适度的检测方法及系统 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180611 Address after: American California Patentee after: Antite Software Co., Ltd. Address before: American Texas Patentee before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180206 Termination date: 20200506 |
|
CF01 | Termination of patent right due to non-payment of annual fee |