RPA开发指南
自动化原理
查找
简体中文
下载PDF

本文内容导航

    指南一《自动化原理》


    导读 :

    本章指南,重在介绍"RPA自动化"的概念解释,您可简单掌握了解即可;

    重点请在后续实际RPA流程项目开发过程中熟悉与掌握。

    1.1 什么是自动化, 为什么要自动化?

    RPA中的自动化指的是"软件自动化",是指在计算机上,用程序去模拟人操作计算机的过程。在没有人为介入的情况下,自动地完成一系列软件操作。其核心是对目标控件的查找定位。

    不论是单平台、还是跨系统场景下的的数据抓取、比对、录入、查询,企业往往需要雇佣诸多劳动力,来进行许多机械式的重复劳作,无形间增加了企业的运作负担。针对以上场景"云扩RPA自动化技术"运应而生,通过RPA自动化流程实现工作场景的降本增效.

    —— 为企业的"商业创新"带来更多的人员预算。


    如果没有自动化技术,仅通过系统单纯模拟在某个屏幕坐标点"执行某个键盘或鼠标输入(动作)"存在很大的局限性,包括但不限于:

        1. 无法将目标置顶(当目标区域被遮挡时)
        2. 无法感知位置变化(屏幕分辨率、缩放比发生变化,软件被拖动到其他位置,最大最小化) 
        3. 无法获取元素信息(文本框文本,勾选框是否被选中等)
    

    因此,我们需要通过控件查找的方式去定位要操作的界面元素,以便实时地获取到它的准确信息并进行交互。



    1.2 自动化的底层原理


    1.2.1 云扩RPA录制技术


    (1)目前云扩RPA支持的自动化技术有:

    • UIA/UIA3
    • IA
    • Java
    • 浏览器(IE,Chrome等)

    对于一些企业常用的软件,云扩还专门为此优化了的定制自动化技术,比如SAP等大型企业办公软件。 不同自动化技术的底层原理各不相同, 在这里只做简单的列举。 大家在平时编辑流程的时候, 并不需要精通各种技术的原理。


    (2)关于AI&UIA/UIA3介绍:

    • IA基于微软早期的可访问技术-Microsoft Active Accessibility(MSAA)。通过COM组件将界面控件的部分属性和接口暴露出来,对于开发年代比较早的软件,它相对能支持的很好;

    • UIA/UIA3利用了微软的的UI Automation技术,相比MSAA暴露更多的控件信息和动作,特别对于WPF开发的应用,它做到了原生支持,是比IA更好的选择。



        <Tips>
    
        UIA与UIA3的区别是:UIA3是UIA的加强,暴露了更多的接口,并且一般来说,UIA3的控件查找速度会比UIA快。
    
        此外,UIA和UIA3是不兼容的,即不能在同一流程里同时使用这两种录制技术。
    



    (3)关于常用录制技术的介绍:


    ① Web录制技术,主要针对浏览器的网页界面 :

    • Web自动化采用注入javascript的方式,在浏览器对应网页的内部注入对应的JavaScript可执行脚本,通过JavaScript脚本对web元素的控制,从而实现自动化。




    • Web自动化依赖云扩开发的 Web Extension(插件/扩展) 作为通讯媒介,从而实现控制对应的JavaScript脚本到指定Web页面。 所以要使用Web自动化浏览器均需要提前安装对应的Web Extension扩展(IE除外)。




    ② Jab录制技术 ,主要针对桌面客户端软件(也对部分内嵌网页的客户端有效):

    • JAB 以官方的Java Access Bridge为基础,对其部署方式做了增强。以及对AWT组件和自定义组件的可访问性做了一定的扩充。支持录制Java应用,如EAS,NC等,使用前需要安装Java扩展。



    ③ SAP录制技术,主要针对SAP客户端 :

    SAP面向SAP Logon客户端,基于SAP GUI Scripting技术。通过对已有接口的封装,SAP录制技术向用户提供更灵活丰富的录制执行功能,使用前,需进行一系列配置已启用SAP的脚本执行功能。



    1.2.2 元素详解


    (1) 什么是元素?

    元素指界面上可以交互或者提供信息的一块区域,这块"区域"对应的是:

    • 应用上真实存在的控件 ,如:按钮,菜单等;
    • 也可以是虚拟出来的区域, 如:图像对应的一块区域、包含某文本的区域。


    (2) 基础元素介绍:

    目前支持的元素类型可以分为两大基础类:桌面元素网页元素。其中:

    • 桌面元素指的是:普通桌面元素(UIA/UIA3/IA),JAVA元素和SAP元素;
    • 网页元素指的是:Chrome,IE,Edge,Firefox(火狐),360和ENCOO(云扩)浏览器元素。


    (3)特殊补充类元素:

    在基础元素之上,另有两大特殊的补充类元素:图像元素CV元素。 它们都是在基础元素对应的屏幕区域内,执行特殊的匹配动作。 此时的基础元素称为锚点

    • 图像元素:利用图片对比完成匹配;
    • CV元素:利用计算机视觉模型对目标区域进行分割,并根据描述符信息完成匹配。

    大部分的元素采用选择器作为查找依据,CV元素采用描述符



    1.2.3 选择器&描述符(简介&修改方法)


    (1)描述符

    描述符仅适用于CV元素,结构如图:

    描述符内容说明:

    1. 每条关键信息由+号隔开;
    2. Target是目标元素的描述信息;
    3. Anchor是辅助定位目标元素的元素。

    匹配时,如果控件类型(上图的Text)和文本(上图的20)无法唯一限定某一元素,便需要用到辅助元素。辅助元素会通过与目标元素的相对位置来对目标进行限制。

    CV组件使用链接(点击查看)



    (2)选择器

    选择器是一个支持查看所指定元素的详细信息的窗口,同时提供编辑功能,用户可以自定义指定元素信息。 选择器结构--如图所示:

    选择器内容说明:

    第1行:指明了当前元素的基础类型以及目标应用的进程名,用于定位目标应用;

    第2行:记录了元素所在的顶层窗口信息。 一个进程可以不止有一个顶层窗口,这一行是为了做出区分;

    第3行开始:一直往下是一层层的子控件信息,逐步缩小范围,最终定位到具体的某一个控件元素。

    最后1级:根据元素类型而不同, 如果如上图是Image类型的,那说明这是个图像元素。


     <Tips> 上方选择器内容举例说明
    
    第2行开始,如果IsDirectChild为true,那么搜索时便只会在直接子控件里搜,否则会在所有子孙控件里搜索。
    
    最后一行,FilePath指明了执行时采用哪张图片去匹配。Accuracy指明相似度最低为多少时,认为两张图片是相同的。
    
    在环境多变的情形下,可以适当降低该阈值。
    



    (3) 元素定位&元素查找(基本原理)

    A. 对于非web元素:

    • 录制时,

    • 会从高亮的控件开始,做一个bottom-up的控件树遍历,得到从应用主窗口到目标控件的控件树链;

    • 然后抽取各个控件的关键特征作为定位目标的依据,这些特征和进程信息组合起来便称为选择器;

    • 执行时,

    • 先根据选择器中的进程和主窗口信息,找到目标控件所在的主窗口;

    • 然后按照控件树信息链执行top-down的逐级查找;

    • 最终定位到目标控件。


    B. 对于web元素:

    • 录制时,web元素的选择器由以下两者共同组成:

    • 录制时,首先会记录所有iframe层级的信息;

    • 其次,还会根据自定义算法或者xpath的算法,抽取出目标元素的关键标签信息。

    • 执行时,先定位到目标iframe,然后在那个iframe根据剩下的元素信息去定位到具体的元素。



    (4)修改元素的3个办法:通配符,变量和XPath


    方法A. 通配符

    当选择器里的关键属性(通常是Name和Title属性)会动态变化时,需要手动在该属性里加入通配符以使得属性值能与各种可能的实际值配对上。 目前支持两个通配符:?*

    ? 用于匹配任意一个字符,相当于正则表达式的

    *用于匹配任意长度的任意字符,相当于正则表达式的

    如果是CV元素的描述符要用通配符,那么直接用正则表达式即可。


    方法B. 变量

    当需要根据外部数据去动态修改选择器时,可以将目标属性值用变量代替。

    格式是: {{变量}}

    常见的使用场景:

    遍历并操作表格中的每一行: 此时如果有与行号关联的属性,则直接往该属性传变量即可,否则可以只保留控件类型属性,然后添加Index属性并使用变量。


    方法C. Xpath

    录制web元素时,如果默认的选择器格式无法满足需求,或者使用者更熟悉XPath,那么也可以用XPath来定位web元素。

    只需要打开选择器编辑器界面,在设置里勾选上“生成XPath”选项,下一次录制便会使用XPath格式来定位元素。

    关于XPATH的更详细介绍可参考:高级开发技巧




    1.2.4 执行动作&匹配查找


    (1)元素执行动作

    点击和输入文本组件可以选择执行动作的方式:

    • 鼠标键盘模拟,模拟手动敲击按键或者鼠标键
    • 设置控件。直接调用控件的相关接口来触发动作。


    ① 使用WEB元素时,默认是设置控件的方式,桌面元素则相反;

    ② 输入文本组件的清空文本选项只有在设置控件时才生效。

    ③ 正常情况下,普通的键鼠模拟便能模拟各种输入和点击 但是在某些特定情景下(例如许多网银的登陆界面),普通模拟被做了安全限制, 这时可以尝试使用组件市场里的“键盘模拟集合”组件,它们能以更高的权限去尝试模拟输入。


    (2)元素匹配查找

    超时时间= 匹配元素的时间 + (匹配到元素后)等待元素消失的时间

    <Tips>匹配超时和超时的区别
    
    ◆ 匹配超时指的是查找控件的时间;
    
    ◆ 而超时指的是执行的总时间。
    
    
    举个例子:等待元素消失组件的执行逻辑是,在"匹配超时"时间内尝试去查找元素
    
    ◆ 如果找不到,认为元素已消失;
    
    ◆ 如果找到了,则在超时时间内去等待元素消失。
    
    一般地,能够选择元素的自动化组件才有匹配超时,它也是最主要的超时属性。
    


    (1)以“等待元素消失”组件为例,组件中共包括3个时间概念,即:

    概念①: 组件匹配元素的时间——指限定查找目标元素的时间,默认为15000毫秒

    概念②: 匹配到元素后等待元素消失的时间(两种情况)

    第一种:“匹配超时”时间结束也未找到该元素

    • 由于未找到元素,所以无需继续等待,即此时等待元素消失的时间为0)

    第二种:在“匹配超时”的时间内找到该元素

    • 则从找到该元素起直到“超时”时间结束,都是去等待元素消失的时间。

    概念③: 组件运行的总时间(即超时,默认为30000毫秒)


    (2)组件运行的逻辑:

    • 先根据匹配超时设置的时间去页面查找指定的元素, 如在该时间内未找到该元素,则元素不存在而直接运行成功;

    • 如果在匹配时间内找到该元素,则会在找到该元素后到超时时间结束前,不断验证元素是否存在,直到元素消失则运行成功或元素未消失则报错超时。



      【举例】指定“百度一下”按钮,等待这个按钮元素消失,此时会有以下情况:

    • 情况1: 运行流程时页面上不存在“百度一下”按钮,或是按钮在超过15000毫秒后才在页面上出现。

    • 运行结果:此时组件就会运行15000毫秒去验证元素,当15000毫秒的匹配超时结束后,组件未匹配到元素,运行成功;

    • 情况2: 运行流程时页面上存在“百度一下”按钮,按钮始终未消失。

    • 运行结果:此时组件仍会运行15000毫秒去验证元素,因为元素存在所以在第1000或2000毫秒时就匹配到了该元素,之后会触发等待超时的逻辑:从匹配到这个元素后(即2000毫秒),到超时时间前(30000毫秒)都会去不断验证元素是否消失,由于按钮始终未消失,所以在运行超时设置的30000毫秒后,组件会报错超时。

    • 情况3: 运行流程时页面上不存在“百度一下”按钮,在第5000毫秒时出现该按钮,之后在第10000毫秒时该按钮消失。

    • 运行结果:此时组件会在5000毫秒时匹配到元素,之后会触发等待元素消失的逻辑,在等到10000毫秒时元素消失后组件就会运行成功。



    1.3 自动化驱动

    云扩RPA提供的自动化驱动以插件的形式安装到我们的终端电脑上,目前支持的驱动有:


    1、 WEB

        扩展名称              对应用途         
      Chrome扩展  
    录制Chrome浏览器,必须插件
     
      Firefox扩展  
    录制Firefox浏览器,必须插件
     
      Microsoft Edge扩展
     录制Edge浏览器,必须插件
     
      360安全浏览器扩展  
    录制360安全浏览器,必须插件
     
    <Tips> 若您试用IE浏览器进行WEB自动化,此处不需要安装对应的插件
    


    2、 远程自动化

        扩展名称              对应用途         
      Citrix 

    通过citrix连接到远程机器上时,

    通过本地机器录制远程机器界面的必要插件

      Windows远程桌面(RDP) 

    通过RDP连接到远程机器上时,

    通过本地机器录制远程机器界面的必要插件

    <Tips>
    
    除了插件外,另需安装配套上方插件的exe程序,安装在远程的虚拟机或服务器上,
    
    需要请联系官方社区技术支持获取
    


    3、数据库

        扩展名称              对应用途         
      IBM DB2扩展   
    操纵IBM DB2数据库的必要插件
     


    4、桌面自动化

        扩展名称              对应用途         
      Java扩展   
    录制java应用的必要插件
     


    5、系统

    扩展名称 对应用途
    Windows屏幕解锁扩展  
    流程自动执行屏幕解锁的必要插件
     
    <Tips> 为什么有的录制技术要安装驱动,有的却不用?
    
    ● 目前UIA、UIA3、IA、SAP录制不需要驱动,其他都需要。
    这是因为它们所依赖的运行库在Windows里已经自带了,而且跟是否安装了特定应用无关。
    
    ● 然而像web,java录制这些,它们需要在特定应用或系统目录配置额外的文件或服务,
    做成插件的形式可以让用户按需选择,减少捆绑安装。
    



    1.4 自动化环境

    大部分的自动化场景都可以运行在我们日常使用的windows环境中即可,对运行环境没有特别的要求,具体要求请见硬件和软件要求.


    下面列出一些云扩提供的一些高级好用的自动化功能:

    (1) 独立桌面

    独立桌面

    独立桌面功能使您可以与机器人协作运行有人值守的流程。以“独立桌面”模式启动的流程在独立的 Windows 会话中运行。

    <Tips>
    
    仅"企业版"支持该功能,且需要以"管理员权限"运行编辑器或机器人,才能在计算机上启用“独立桌面”功能。
    
    不支持主会话与“独立桌面”同时多开的软件有:Chrome,Edge,Outlook等。
    


    (2) Session保持

    session保持

    这个选项是为了让这个会话在断开后立马创建一个新的会话,这样远程的VM就可以始终保持有一个会话连接,流程就不会因为会话中断而执行失败了。

    <Tips>
    
    远程连接到其他机器时,如果使用了截屏组件,则不能将远程窗口最小化,否则会出错。
    
    在使用虚拟机(云服务器)作为RPA运行环境时,这个功能非常有用。
    


    (3) 锁屏运行

    锁屏运行是指使用“锁屏运行”组件之后,编辑器或机器人在PC锁屏的后台继续运行。当流程需要执行涉密流程需要避免被查看或被意外的操作打断时,就非常适合使用”锁屏运行“。

    使用方式是在流程中添加”锁屏运行“,再在该组件之后添加的流程就会在锁屏后运行:

    锁屏运行

    也可使用”屏保运行“组件来达到类似的效果而无需强制锁屏,使用方法与”锁屏运行“一致。

    <Tips>
    
    "锁屏运行"仅支持 Windows 10 专业版操作系统。
    
    锁屏或屏保会影响界面自动化图像识别技术获取图像,进而导致相关组件运行失败,
    
    请确保不同时使用锁屏运行和相关的界面自动化组件。