一、课程简介
【课程目标】
本节课程主要通过对选择器的内容节点信息的深入学习,带大家一起学会选择器的基本编辑与使用、什么是动态元素、如何寻找稳定元素特征值?最后完成一个电商抓数案例。
课时内容:
- RPA第十三课 (2023年)
- 课程时长:58分钟 ,7节课时
- 编辑器下载:https://www.encoo.com/download
目录:
- 知识点1-- (实战必学)选择器&自动化原理(课程时长:6分钟)
- 知识点2-- 找不到元素? 初识"动态元素"(课程时长:5分钟)
- 知识点3-- 元素不稳定?巧用"元素探测器"(课程时长:5分钟)
- 知识点4--选择器必知必会-3个用法(课程时长:2分钟)
- 知识点5--选择器方法1-通配符(课程时长:2分钟)
- 知识点6--选择器方法2-变量(课程时长:8分钟)
- 案例实战:抓取电商平台商品数据(课程时长:30分钟)
二、学习内容:
- 课程简介:知识点1-- "实战必学"选择器解读(课程时长:6分钟)
- 学习目标:熟悉 ★★
- 难易程度:较难 ★★★
- 讲义下载:文末进群-获取“讲义PPT”
2.1 视频教程
2.2 文档教程
导读:
本节内容篇幅较长,内容极为重要,面向专业级RPA实施开发人员,属于业务实际复杂场景必看的课时;
本节内容主要分为4个部分,
- 第一部分:什么是自动化, 为什么要自动化?
- 第二部分:自动化的底层原理,讲解云扩RPA录制技术、元素、选择器&描述符(简介&修改方法),最后是执行动作&匹配查找
- 第三部分:实操--属性定位元素,通过修改选择器,通过不同属性定位一个按钮。
- 以及最后为大家补充“自动化必知”的两个知识点:自动化驱动以及自动化环境
第一部分:什么是自动化, 为什么要自动化?
RPA中的自动化指的是"软件自动化",是指在计算机上,用程序去模拟人操作计算机的过程。在没有人为介入的情况下,自动地完成一系列软件操作。其核心是对目标控件的查找定位。
不论是单平台、还是跨系统场景下的的数据抓取、比对、录入、查询,企业往往需要雇佣诸多劳动力,来进行许多机械式的重复劳作,无形间增加了企业的运作负担。针对以上场景"云扩RPA自动化技术"运应而生,通过RPA自动化流程实现工作场景的降本增效.
—— 为企业的"商业创新"带来更多的人员预算。
注意:
如果没有自动化技术,仅通过系统单纯模拟在某个屏幕坐标点"执行某个键盘或鼠标输入(动作)"存在很大的局限性,包括但不限于:
- 无法将目标置顶(当目标区域被遮挡时)
- 无法感知位置变化(屏幕分辨率、缩放比发生变化,软件被拖动到其他位置,最大最小化)
- 无法获取元素信息(文本框文本,勾选框是否被选中等)
因此,我们需要通过控件查找的方式去定位要操作的界面元素,以便实时地获取到它的准确信息并进行交互。
第二部分:自动化的底层原理
一、云扩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更好的选择。
注意:
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) 基础元素介绍:
目前支持的元素类型可以分为两大基础类:桌面元素和网页元素。其中:
- 桌面元素指的是:普通桌面元素(UIA/UIA3/IA),JAVA元素和SAP元素;
- 网页元素指的是:Chrome,IE,Edge,Firefox(火狐),360和ENCOO(云扩)浏览器元素。
(3)特殊补充类元素:
在基础元素之上,另有两大特殊的补充类元素:图像元素和CV元素。 它们都是在基础元素对应的屏幕区域内,执行特殊的匹配动作。 此时的基础元素称为锚点。
- 图像元素:利用图片对比完成匹配;
- CV元素:利用计算机视觉模型对目标区域进行分割,并根据描述符信息完成匹配。
大部分的元素采用选择器作为查找依据,CV元素采用描述符。
三、选择器&描述符(简介&修改方法)
(1)描述符
描述符仅适用于CV元素,结构如图:
描述符内容说明:
- 每条关键信息由+号隔开;
- Target是目标元素的描述信息;
- Anchor是辅助定位目标元素的元素。
匹配时,如果控件类型(上图的Text)和文本(上图的20)无法唯一限定某一元素,便需要用到辅助元素。辅助元素会通过与目标元素的相对位置来对目标进行限制。
(2)选择器
选择器是一个支持查看所指定元素的详细信息的窗口,同时提供编辑功能,用户可以自定义指定元素信息。
选择器结构--如图所示:
选择器内容说明:
第1行:指明了当前元素的基础类型以及目标应用的进程名,用于定位目标应用;
第2行:记录了元素所在的顶层窗口信息。 一个进程可以不止有一个顶层窗口,这一行是为了做出区分;
第3行开始:一直往下是一层层的子控件信息,逐步缩小范围,最终定位到具体的某一个控件元素。
最后1级:根据元素类型而不同, 如果如上图是Image类型的,那说明这是个图像元素。
即在中间窗体中的XML格式的内容是节点信息,用来描述所选节点的特征内容。
一般网页自动化会有这三个关键的节点,分别是:application,window 和webelement。右侧栏中显示的是:节点中的属性。
注意: 上方选择器内容举例说明
第2行开始,如果IsDirectChild为true,那么搜索时便只会在直接子控件里搜,否则会在所有子孙控件里搜索。
最后一行,FilePath指明了执行时采用哪张图片去匹配。Accuracy指明相似度最低为多少时,认为两张图片是相同的。
在环境多变的情形下,可以适当降低该阈值。
各节点常用属性介绍: 在Chrome浏览器中点击f12进入开发者模式 即可对照网页的源代码,查看选择器内属性。
(1).Application:
- AutomationType - 录制技术
- ProcessName - 进程名
(2).Window:
- Title - 网页标题名
- URL - 网页地址(仅在windows节点下可用)
(3).WebElement:
- Id - id 属性是元素在网页内的唯一标识符。
例如: 网页可能包含多个
<p>
标签,id 属性可以指定每个<p>
标签的唯一标识符。
- Tag - 当前元素的标签名, 例如:
<div>
,<input>
。- AncestorId - Encoo的自定义属性,向上父节点中第一个有 id 的节点对应的 id 值,即祖先节点上的id
- CssSelector - Dom路径CSS选择器,所有父亲节点的和自己的 tag 名组合
- TableCol & TableRow - Encoo自定义的属性,在 table 中的第几行和第几列
- SInfo - Encoo自定义的属性,特征名(可以理解为是显示的文本)
一些特别的属性介绍:
- IsLeaf - Encoo自定义的属性,是否叶子节点,即该节点没有子节点
- Index - Encoo自定义的属性,用于匹配集合索引下标,默认为1; 当匹配到多个元素时,可以通过调整index的值,来精确定位目标元素,索引从1开始计算,默认是第一个元素。
那以上是常用到的属性,还有更多属性在这里就不展开细说了,大家可以去文档中,查看 支持的属性列表
(3) 元素定位&元素查找(基本原理)
A. 对于非web元素:
录制时,
会从高亮的控件开始,做一个bottom-up的控件树遍历,得到从应用主窗口到目标控件的控件树链;
然后抽取各个控件的关键特征作为定位目标的依据,这些特征和进程信息组合起来便称为选择器;
执行时,
先根据选择器中的进程和主窗口信息,找到目标控件所在的主窗口;
然后按照控件树信息链执行top-down的逐级查找;
最终定位到目标控件。
B. 对于web元素:
录制时,web元素的选择器由以下两者共同组成:
录制时,首先会记录所有iframe层级的信息;
其次,还会根据自定义算法或者xpath的算法,抽取出目标元素的关键标签信息。
执行时,先定位到目标iframe,然后在那个iframe根据剩下的元素信息去定位到具体的元素。
四、执行动作&匹配查找
(1)元素执行动作
点击和输入文本组件可以选择执行动作的方式:
- 鼠标键盘模拟,模拟手动敲击按键或者鼠标键
- 设置控件。直接调用控件的相关接口来触发动作。
① 使用WEB元素时,默认是设置控件的方式,桌面元素则相反;
② 输入文本组件的清空文本选项只有在设置控件时才生效。
③ 正常情况下,普通的键鼠模拟便能模拟各种输入和点击 但是在某些特定情景下(例如许多网银的登陆界面),普通模拟被做了安全限制, 这时可以尝试使用组件市场里的“键盘模拟集合”组件,它们能以更高的权限去尝试模拟输入。
(2)元素匹配查找
超时时间= 匹配元素的时间 + (匹配到元素后)等待元素消失的时间
注意:匹配超时和超时的区别
◆ 匹配超时指的是查找控件的时间;
◆ 而超时指的是执行的总时间。
举个例子:等待元素消失组件的执行逻辑是,在"匹配超时"时间内尝试去查找元素
◆ 如果找不到,认为元素已消失;
◆ 如果找到了,则在超时时间内去等待元素消失。
一般地,能够选择元素的自动化组件才有匹配超时,它也是最主要的超时属性。
(1)以“等待元素消失”组件为例,组件中共包括3个时间概念,即:
概念①: 组件匹配元素的时间——指限定查找目标元素的时间,默认为15000毫秒
概念②: 匹配到元素后等待元素消失的时间(两种情况)
第一种:“匹配超时”时间结束也未找到该元素
- 由于未找到元素,所以无需继续等待,即此时等待元素消失的时间为0)
第二种:在“匹配超时”的时间内找到该元素
- 则从找到该元素起直到“超时”时间结束,都是去等待元素消失的时间。
概念③: 组件运行的总时间(即超时,默认为30000毫秒)
(2)组件运行的逻辑:
先根据匹配超时设置的时间去页面查找指定的元素, 如在该时间内未找到该元素,则元素不存在而直接运行成功;
如果在匹配时间内找到该元素,则会在找到该元素后到超时时间结束前,不断验证元素是否存在,直到元素消失则运行成功或元素未消失则报错超时。
【举例】指定“百度一下”按钮,等待这个按钮元素消失,此时会有以下情况:
- 情况1: 运行流程时页面上不存在“百度一下”按钮,或是按钮在超过15000毫秒后才在页面上出现。
- 运行结果:此时组件就会运行15000毫秒去验证元素,当15000毫秒的匹配超时结束后,组件未匹配到元素,运行成功;
- 情况2: 运行流程时页面上存在“百度一下”按钮,按钮始终未消失。
- 运行结果:此时组件仍会运行15000毫秒去验证元素,因为元素存在所以在第1000或2000毫秒时就匹配到了该元素,之后会触发等待超时的逻辑:从匹配到这个元素后(即2000毫秒),到超时时间前(30000毫秒)都会去不断验证元素是否消失,由于按钮始终未消失,所以在运行超时设置的30000毫秒后,组件会报错超时。
- 情况3: 运行流程时页面上不存在“百度一下”按钮,在第5000毫秒时出现该按钮,之后在第10000毫秒时该按钮消失。
- 运行结果:此时组件会在5000毫秒时匹配到元素,之后会触发等待元素消失的逻辑,在等到10000毫秒时元素消失后组件就会运行成功。
第三部分:实操--属性定位元素
那现在我们已经了解了每个节点中包含的信息,接下来我们来试一下自己定义属性去定位元素。
具体操作步骤
第一步:
- 回到流程编辑,添加一个新组件“点击”,选择按钮“百度一下”。
第二步:
- 打开选择器,指定元素 “百度一下”按钮。
第三步:
- 可以看到已选用的属性为tag,id, type,那么其他属性是否可以定位到这个按钮呢?
第四步:
- 回到Chrome浏览器F12查看dom元素,发现value= "百度一下"。
第五步:
- 去掉id,type,新建属性Sinfo,值为“百度一下”。然后验证一下。
第六步:
- 发现使用其它属性同样可以精确定位元素。
附1:补充知识点1 -- 自动化驱动
云扩RPA提供的自动化驱动以插件的形式安装到我们的终端电脑上,目前支持的驱动有:
(1)、 WEB
扩展名称 | 对应用途 |
---|---|
Chrome扩展 | 录制Chrome浏览器,必须插件 |
Firefox扩展 | 录制Firefox浏览器,必须插件 |
Microsoft Edge扩展 | 录制Edge浏览器,必须插件 |
360安全浏览器扩展 | 录制360安全浏览器,必须插件 |
注意:
若您试用IE浏览器进行WEB自动化,此处不需要安装对应的插件
(2)、 远程自动化
扩展名称 | 对应用途 |
---|---|
Citrix | 通过citrix连接到远程机器上时, 通过本地机器录制远程机器界面的必要插件 |
Windows远程桌面(RDP) | 通过RDP连接到远程机器上时, 通过本地机器录制远程机器界面的必要插件 |
注意:
除了插件外,另需安装配套上方插件的exe程序,安装在远程的虚拟机或服务器上,
需要请联系官方社区技术支持获取
(3)、数据库
扩展名称 | 对应用途 |
---|---|
IBM DB2扩展 | 操纵IBM DB2数据库的必要插件 |
(4)、桌面自动化
扩展名称 | 对应用途 |
---|---|
Java扩展 | 录制java应用的必要插件 |
(5)、系统
扩展名称 | 对应用途 |
---|---|
Windows屏幕解锁扩展 | 流程自动执行屏幕解锁的必要插件 |
注意: 为什么有的录制技术要安装驱动,有的却不用?
目前UIA、UIA3、IA、SAP录制不需要驱动,其他都需要。 这是因为它们所依赖的运行库在Windows里已经自带了,而且跟是否安装了特定应用无关。
然而像web,java录制这些,它们需要在特定应用或系统目录配置额外的文件或服务,做成插件的形式可以让用户按需选择,减少捆绑安装。
附2:补充知识点 -- 自动化环境
大部分的自动化场景都可以运行在我们日常使用的windows环境中即可,对运行环境没有特别的要求,具体要求请见硬件和软件要求.
下面列出一些云扩提供的一些高级好用的自动化功能:
(1) 独立桌面
独立桌面功能使您可以与机器人协作运行有人值守的流程。以“独立桌面”模式启动的流程在独立的 Windows 会话中运行。
注意: 仅"企业版"支持该功能,且需要以"管理员权限"运行编辑器或机器人,才能在计算机上启用“独立桌面”功能。
不支持主会话与“独立桌面”同时多开的软件有:Chrome,Edge,Outlook等。
(2) Session保持
这个选项是为了让这个会话在断开后立马创建一个新的会话,这样远程的VM就可以始终保持有一个会话连接,流程就不会因为会话中断而执行失败了。
注意:
远程连接到其他机器时,如果使用了截屏组件,则不能将远程窗口最小化,否则会出错。
在使用虚拟机(云服务器)作为RPA运行环境时,这个功能非常有用。
(3) 锁屏运行
锁屏运行是指使用“锁屏运行”组件之后,编辑器或机器人在PC锁屏的后台继续运行。当流程需要执行涉密流程需要避免被查看或被意外的操作打断时,就非常适合使用”锁屏运行“。
使用方式是在流程中添加”锁屏运行“,再在该组件之后添加的流程就会在锁屏后运行:
也可使用”屏保运行“组件来达到类似的效果而无需强制锁屏,使用方法与”锁屏运行“一致。
注意:
"锁屏运行"仅支持 Windows 10 专业版操作系统。
锁屏或屏保会影响界面自动化图像识别技术获取图像,进而导致相关组件运行失败,
请确保不同时使用锁屏运行和相关的界面自动化组件。