• 机器人过程自动化(RPA)入门 5. 处理应用程序中的控件


    到目前为止,您应该能够制作相当复杂的工作流,并使用控制流采取各种路径。您现在应该知道如何存储和评估变量以做出决策。我希望你广泛使用录音机,因为我们将在本章中重新访问录音机以了解更多信息。

    在本章中,我们将详细介绍如何与UI中的控件进行交互。
    有时,您可能需要单击特定按钮或从文本框中提取信息。要么我们对控件采取一些操作,要么我们读/写。我们将详细介绍如何准确地做到这一点。在本章中,读者将了解UiPath中可用于提取控件并对控件执行操作的各种选择器:

    • 查找和附加窗口
    • 查找控件
    • 控件的等待技术
    • 根据控件操作鼠标和键盘活动
    • 使用UiExplorer
    • 处理事件

    然后,我们将在新的背景下讨论录制。

    提取是RPA的一个主要功能,可以实现UI自动化。在幕后,许多技术都在致力于从UI中无缝提取信息。当典型的RPA技术不成功时,使用OCR技术来提取信息。我们将在以下主题中学习如何使用OCR和其他技术:

    • 屏幕抓取
    • 何时使用OCR
    • 可用的OCR类型
    • 如何使用OCR

    查找和附加窗口

    在本节中,我们将使用“附加窗口”活动。

    “附加窗口”活动可以在“活动”面板中找到。此活动通常用于附加已打开的窗口。当我们使用Basic或Desktop记录器记录操作时,它也是自动生成的。通过下一节的例子,你会有一个更清晰的想法。

    实施“附加窗口”活动

    在本例中,我们将手动使用“附加窗口”活动。在这里,我们将附加一个记事本窗口,然后在其中写入一些文本:(使用老版本创建)

    1. 创建一个空白项目,并给它一个有意义的名称。
    2. 将流程图活动拖放到“设计器”面板上。在设计面板内拖放点击活动。设置为“开始”节点。
    3. 双击单击活动,然后单击屏幕上的指示。找到记事本图标。
    4. 在“设计器”主面板上拖放“附加窗口”活动。将“附加窗口”活动连接到“单击”活动。
    5. 双击“附加窗口”活动。单击屏幕上的单击窗口,并指示记事本窗口。记事本窗口现在附加到上一个活动:
    6. 为了完整起见,我们将在活动中添加一个类型。只需在“附加窗口”活动中拖放“Type Into”活动即可。单击窗口内的Indicate元素,找到要写入文本的Notepad窗口。将Type的text属性中的文本写入活动中。
    7. 点击Run按钮。

    查找控件

    有许多活动可用于查找屏幕/应用程序上的控件。这些活动用于查找或等待UI元素。

    以下是有助于找到控件的活动:

    • Anchor base
    • Element Exists
    • Element scope
    • Find children
    • Find element
    • Find relative element
    • Get ancestor
    • Indicate on screen

    我们将逐一讨论所有这些控制措施。

    Anchor base

    此控件用于通过查看旁边的UI元素来定位UI元素。当我们无法控制选择器时,会使用此活动。这意味着当我们没有可靠的选择器时,我们应该使用Anchor base控件来定位UI元素。

    我们可以使用Anchor base控件,如下节所述:

    1. 将流程图活动拖放到空白项目的“设计器”面板上。此外,从Activities(活动)面板中拖放Anchor base控件。将Anchor base控件与“开始”连接。
    2. 双击Anchor base控件:
    3. 我们必须向Anchor base提供两项活动:Anchor和action活动。
    4. 拖拽Anchor Base活动(例如:FInd Element 活动)在Anchor 字段,并且Action活动(例如:Type into)在Drop Action Activy Here


    5. Anchor base活动将在要执行操作的元素附近找到相对元素,Action活动将执行您指定的相应操作。

    Element Exists

    此控件用于检查UI元素的可用性。它检查UI元素是否存在。如果UI元素存在,则返回布尔结果,然后返回true:否则,返回false。

    您可以使用此控件来检查UI元素。事实上,将此控件用于未确认可用性或频繁更改的UI元素是一种很好的做法。

    只需从Activities面板中拖放Element Exists控件。双击它。可以看到屏幕上有一个指示选项。单击它以指示UI元素。它返回一个布尔结果,您可以稍后从Exists属性中检索该结果。您只需要在属性面板的Exists属性中提供一个布尔变量。

    Element scope

    此控件用于附加UI元素并对其执行多个操作。您可以在单个UI元素中使用一组操作。

    拖放Element scope控件,然后双击此控件:

    您可以清楚地看到,您必须通过单击屏幕上的指示并指定要在Do序列中执行的所有操作来指示UI元素。您可以在Do序列中添加许多活动。

    Find children

    此控件用于查找指定UI元素的所有子UI元素。它还检索子UI元素的集合。您可以使用循环来检查所有子UI元素,或者设置一些筛选条件来筛选出UI元素。

    从“活动”面板中拖放“Find children”控件。

    双击它以指示要指定的UI元素。您可以单击屏幕上的指示来指示:

    您必须在children属性中提供类型为IEnumberable的变量,如前面的屏幕截图所述。然后,此变量用于检索UI元素:

    Find element

    此控件用于查找特定的UI元素。它等待UI元素出现在屏幕上,然后将其返回。

    使用此控件的方式与使用其他控件的方式相同。只需拖放此控件,并通过单击屏幕上的“指示”来指示UI元素。

    您可以在Find element控件的Found元素属性中指定UI元素类型的变量,以接收作为输出的UI元素。

    Find relative element

    此控件类似于Find element控件。唯一的区别是它使用相对固定的UI元素来正确识别UI元素。

    此控件可用于没有可靠选择器的情况。

    只需拖放此控件,并通过单击屏幕上的“指示”来指示UI元素。

    您还可以在指示UI元素后查找其选择器属性,以便进行更好的分析。

    Get ancestor

    此控件用于检索指定UI元素的祖先。您必须提供一个变量来接收祖先元素作为输出。您可以在Get祖先控件的Ancestor属性中指定变量名。

    收到祖先元素后,可以检索其属性、属性等以进行进一步分析:

    只需拖放此控件,并通过单击屏幕上的“指示”来指示UI元素。

    Indicate on screen

    此控件用于在运行时指示和选择UI元素或区域。它提供了在运行工作流时指示和选择UI元素或区域的灵活性。

    您只需在项目中拖放此控件:

    不要将其与在任何活动(如键入)内编写的“在屏幕上指示”混淆。在前面的例子中,我们在各种控件中使用了屏幕上的指示(如下面的屏幕截图所示)。此按钮用于在执行工作流之前定位区域或UI元素,而Indicate on screen控件在执行工作流之后执行其流程:

    等待控件的技术

    有三种技术可以让我们控制等待。它们是:

    1. Wait Element Vanish
    2. Wait Image Vanish
    3. Wait attribute

    Wait Element Vanish

    此活动用于等待某个元素从屏幕上消失。让我们看一个使用“等待元素消失”活动的示例:

    1. 创建一个Blank项目,并给它一个有意义的名称。
    2. 将流程图活动拖放到“设计器”面板上。此外,在“设计器”面板上拖放“等待元素消失”活动。将此活动设置为“开始”节点。
    3. 双击“等待元素消失”活动,然后在屏幕上指示哪个元素需要消失。

    Wait Image Vanish

    “等待图像消失”活动类似于“等待元素消失”活动。此活动用于等待图像从UI元素中消失。

    等待元素消失和等待图像消失活动之间的唯一区别是,前者用于等待元素消失,而后者用于等待图像消失。

    Wait attribute

    此活动用于等待指定元素属性的值等于字符串。我们必须明确指定字符串:

    1. 将流程图活动拖放到“设计器”面板上。接下来,在“设计器”面板上拖放“等待属性"。现在,右键单击“等待”属性活动,并将其设置为“开始”节点。
    2. 双击“等待属性"活动。我们必须指定三个值:属性、元素和文本属性。我们还必须指定必须提供值的元素:
    3. 点击Run(运行)按钮,查看结果。

    操作控件的鼠标和键盘活动

    在UiPath Studio中工作时,我们必须使用各种类型的控件,如查找控件、鼠标控件、键盘控件等,以实现任务自动化。在本节中,我们将实现鼠标和键盘的活动。

    鼠标活动

    那些涉及与鼠标交互的活动属于鼠标活动的类别。

    UiPath Studio中有三个鼠标活动:

    • 单击
    • 双击
    • 悬停

    单击活动

    当我们必须单击屏幕上的UI元素时,我们通常使用click活动。单击活动非常容易使用,如以下示例所示:

    1. 将流程图拖放到“设计器”面板上。在Activities(活动)面板的搜索栏中搜索mouse。拖放“单击”活动。右键单击“单击”活动,然后选择“设置为开始节点”。
    2. 双击click活动。单击屏幕上的指示,并指示要单击的UI元素:
    3. 点击Run按钮查看结果。

    双击活动

    我们已经看到了Click活动。双击活动类似于单击活动。它只是执行双击操作。在项目中使用双击活动与单击几乎相同。您必须使用双击活动而不是单击活动,并指示UI元素,就像我们在上一个示例中所做的那样。

    悬停活动

    悬停活动用于将鼠标悬停在UI元素上。有时,我们必须将鼠标悬停在UI上才能执行操作。在这种情况下,可以使用悬停活动:

    1. 将流程图拖放到“设计器”面板上。在Activities(活动)面板的搜索栏中搜索mouse。拖放悬停活动。在悬停活动上单击鼠标右键,然后选择“设置为起始节点”:
    2. 双击悬停活动。单击屏幕上的“指示”以指示要悬停在其上的UI元素。就这样。我们完成了。
    3. 点击Run按钮查看结果。

    键盘活动

    在自动化任务的同时,我们必须大量处理键盘活动。键盘活动通常涉及与键盘的交互。

    在UiPath Studio中,以下是键盘活动:

    • 发送热键
    • 输入
    • 键入安全文本

    发送热键

    此活动用于将键盘上的击键作为输入发送到屏幕。让我们举一个例子。

    在以下示例中,我们将使用“发送热键”活动滚动主页:

    1. 将流程图拖放到“设计器”面板上。在“活动”面板的搜索栏中搜索keyboard。拖放“发送热键”活动。在“发送热键”活动上单击鼠标右键,然后选择“设置为开始节点”。
    2. 双击“发送热键”活动。单击屏幕上的指示并指示所需页面("http://www.taobao.com")。您可以通过标记复选框来指定任何关键点。也可以通过从下拉列表中选择一个关键点来指定关键点。在我们的示例中,我们选择了向下键:
    3. 点击Run(运行)按钮查看结果。

    要查看正确的结果,只需向下滚动网站即可。当这个活动完成它的工作时,你将能够区分网页位置的变化。

    键入活动

    此活动用于在UI元素中键入文本。它还支持特殊键。

    “键入”活动与“发送热键”活动非常相似。我们必须把按键和特殊按键一起发送。特殊钥匙是可选的:

    您可以使用此活动,只需将Type拖放到活动中,并通过单击+图标并从下拉列表中选择键来指定键击和特殊键(如果您也希望发送特殊键)。您还必须在屏幕上指示要键入文本的区域。

    键入安全文本

    此活动用于向UI元素发送安全文本。它以安全的方式发送字符串:

    1. 将流程图拖放到“设计器”面板上。在“活动”面板的搜索栏中搜索keboard。拖放“键入安全文本”活动。右键单击“键入安全文本”活动,然后选择“设置为开始节点”。
    2. 创建一个SecureString类型的变量。现在,双击Type secure text活动,并在Type SecureText活动的SecureText属性中指定变量的名称。您还必须通过单击屏幕上的指示在屏幕上指示:

    我们尚未为SecureString型Variable1赋值。在企业场景中,您将使用“获取凭据”活动。当我们必须使用Orchestrator时,会使用“获取凭据”活动。我们将在本书后面了解Orchestrator。

    使用UiExplorer

    UiExplorer是选择器的更高级版本。它为我们提供了自定义选择器的灵活性。

    让我们通过一个例子来理解UiExplorer的概念。在本例中,我们将在记事本窗口中键入一些文本。自动化这项任务很容易。您只需要使用“键入”活动,并在屏幕上指示要键入的区域,并提供要键入的文本。假设您打开了一个记事本窗口,在其中写入了一些文本,然后保存了这个文件。如果你想再次在其中写入一些文本,那么UiPath Studio会给你一个错误。

    实施没有错。实际情况是,当你在记事本中写一些文本时,UiPath Studio会识别文件、应用程序、类型、标题和类,并保存这些信息以备将来识别。

    您已通过提供名称来保存文件。因此,标题已被系统更改(因为记事本窗口的名称已更改)。当你做出第二个尝试写入一些文本时,UiPath Studio无法识别记事本窗口的实例。

    我们可以使用UiExplorer进行更正。我们已经自动完成了在记事本窗口中写入一些文本的任务。

    单击在UiExplorer中打开按钮:
    你只需要编辑这个标题。只需在引号之间指定测试记事本:

    问题是,当您打开“记事本”窗口时,UiPath Studio将title属性保存为“无标题记事本”。您保存了该文件,并将其标题更改为测试记事本。
    当你下次尝试写一些文本时,它无法识别标题,因为它已经从无标题记事本更改为测试记事本。

    您只需要编辑title属性就可以删除错误。

    UiExplorer用于自定义选择器并查看属性及其关联值。仔细查看并检查应该更改的属性。

    事件处理

    执行某些操作时会发生事件。有不同类型的事件:

    • 元素触发事件
    • 图像触发事件
    • 系统触发事件

    元素触发事件

    这种类型的事件处理点击和按键事件。

    点击触发器

    单击指定的UI元素时会发生此事件。

    在使用Click触发器之前,我们必须使用Monitor events活动。如果没有Monitor事件,则无法使用Click触发器。

    双击Monitor events。在Monitor事件中拖放Click触发器。此外,在“Monitor events”的“事件处理程序”部分中拖放活动。在本例中,我们使用了Messagebox活动,还指定了字符串值。

    在Click触发器中,您必须指示要单击的UI元素:

    当在指定按钮上执行Click操作时,将调用事件处理程序,并执行事件处理程序中的活动。

    按键触发器

    此事件类似于Click触发器。按键时会发生按键触发事件。已经在某个特定的UI元素上执行了。它在被触发时调用事件处理程序。

    使用按键触发事件时,必须指定按键或按键组合。

    指示要对其执行操作的UI元素:

    当在指定的UI元素上按键时,将调用事件处理程序。

    图像触发事件

    Click图像触发器是一个图像触发事件。

    顾名思义,点击图像触发器用于当我们点击图像时。您只需要在Monitor事件中使用Click image触发器事件并指示图像即可。在单击图像触发事件中单击被起诉的图像后,将调用事件处理程序。

    系统触发事件

    以下是系统触发事件:

    • 热键触发器
    • 鼠标触发器
    • 系统触发器

    热键触发器

    按下特殊键时会引发此事件。正如我们已经了解的触发事件一样,您可以自己使用热键触发事件。您必须在Monitor事件中使用此事件。

    指定特殊键或键的组合。此外,提供事件发生时将调用的事件处理程序。

    鼠标触发器

    按下鼠标按钮时会触发此事件。在Monitor事件中使用此事件并指定鼠标按钮:鼠标左键、鼠标中键或鼠标右键。

    系统触发器

    当您必须使用所有键盘事件、所有鼠标事件或同时使用这两个事件时,将使用此事件。

    在下面的屏幕截图中,我们将System触发器事件拖放到Monitor事件中。您可以指定触发器输入属性:

    重新访问记录器

    您已经在第二章“录制并播放”中了解了任务录制。在本节中,我们将进一步探讨录制。

    正如我们前面所讨论的,在UiPath Studio中有四种类型的录制:

    • Basic recording
    • Desktop recording
    • Web recording
    • Citrix recording

    Basic recording

    这用于记录具有单个窗口的应用程序的操作。基本录制使用完整的Selector。它对执行单个操作的应用程序更有效。它不适合具有多个窗口的应用程序。

    选择器有两种类型,部分选择器和完全选择器。完全选择器具有识别控件或应用程序的所有属性。基本录制使用完整的选择器。

    请注意,在上图中,有不同的活动,但这些活动没有包装在容器中,它是由Basic记录器生成的。基本记录生成不同的活动,并将它们直接放置在具有完整选择器的序列中。

    您已经了解了如何使用Basic记录器自动执行任务;现在,让我们来谈谈其他录制器。

    Desktop recording

    这类似于基本录制,增加了处理多个操作的优势。它最适合自动化桌面应用程序。

    桌面记录器生成部分选择器。Partial选择器具有层次结构。它们被拆分为父子视图,以便正确识别UI元素。

    请注意,在上图中有一个Attach Window活动,其他活动嵌套在它下面。此流是由桌面记录器生成的:

    Web recording

    可以使用Web记录器进行Web录制。为了记录web操作,应该安装该浏览器的UiPath扩展插件。否则,您将无法使用Web记录自动执行任务或操作。

    你只需要点击安装图标,然后点击安装扩展。现在,选择您的浏览器并单击它。UiPath扩展名将添加到您指定的浏览器中。

    Web录制类似于桌面录制。您只需要记录操作并保存即可。

    创建一个空白项目。拖放流程图活动。现在,单击录制图标并选择Web录制。你可以自己在网上记录你的行为,然后保存。在我们的案例中,我们使用浏览器打开了一个网页,并登录到www.baidu.com. 然后,我们通过单击Web记录器的“录制”按钮开始录制。接下来,我们在百度的搜索栏中键入一些文本,并执行单击活动。然后,我们按下Esc键退出录制,然后单击“保存并退出”按钮。现在,在我们的Designer面板中生成了一个录制序列。将此序列连接到“开始”节点。点击Run按钮查看结果。在下面的屏幕截图中,您可以看到Web记录器生成的序列:

    在运行UiPath工作流之前,请确保您在百度主页上。

    我们已经看过web Recording,它非常容易。还有另一种从网站中提取信息的选项。

    我们可以使用数据抓取轻松地从网站中提取信息。

    假设我们想从亚马逊的网站上提取数据。假设我们想在亚马逊上搜索书籍并提取搜索结果。通过数据抓取,从网站中提取数据变得非常容易:

    1. 创建一个空白项目,并给它一个有意义的名称。单击“创建”。
    2. 登录亚马逊网站并搜索书籍。屏幕上会列出详细的图书列表:
    3. 将流程图活动拖放到“设计器”面板上。现在,点击数据抓取图标。将弹出一个窗口。
    4. 单击“下一步”按钮。
    5. 你必须指出第一本书的实体。实体可以是名称、价格、作者等等。这是您的选择。
    6. 让我们指出这本书的名字。之后,它将询问下一本书的实体。同时指出第二本书的实体。单击“下一步”。
    7. 这意味着你必须指出第二本书的实体:然而,实体是相同的。如果您选择name作为第一本书的实体,那么您必须是特定的,并选择name作为第二本书的主体。你不应该选择名称作为第一本书的实体,然后选择价格作为第二本书的主体。
    8. 同样,会弹出一个窗口,要求您配置列。您也可以提取URL。如果要执行此操作,请选中“提取URL”复选框。
    9. 您也可以指定列名。单击“下一步”按钮。
    10. 正如您所看到的,所有的书名都被提取到一个窗口中。如果您想提取更多列或更多实体,请单击“提取相关数据”,然后您必须再次指示书中的另一个实体来提取更多列,就像我们之前所做的那样。之后,将提取所有数据并将其添加到此表中。这里,我们有一列,但如果提取更多的实体,那么将有更多的列添加到此表中:
    11. 单击“完成”按钮。如果您的查询结果跨越多个页面,它将要求您指示网站上的页面导航链接(我们用来导航到另一个/下一个页面的网站的“下一步”按钮)。如果查询结果跨越多个页面,请单击“是”按钮并指明链接,否则单击“否”按钮。
    12. 我们点击了“否”按钮。我们的流程图中生成了一个数据抓取序列。
    13. 它还将生成一个数据表。您可以从数据表中检索信息。

    Citrix

    处理远程桌面连接时,不能使用“基本录制”和“桌面录制”等方法。在RDP环境中,图像将从一个桌面发送到另一个桌面,并通过分析鼠标按钮指针的位置进行映射。因此,不能使用基本和桌面记录,因为这些记录技术无法与图像交互。在Citrix环境中,我们有“单击文本”和“单击图像”活动,使用它们我们可以轻松地处理图像。

    您可以清楚地看到Citrix录制中列出的活动:

    1. Click Image
    2. Click Text
    3. Type
    4. Select & Copy
    5. Screen Scraping
    6. Element
    7. Text
    8. Image

    所有这些活动都在Citrix环境中广泛使用。

    您可以像使用基本录制或桌面录制一样使用这些活动:唯一的区别是您必须在屏幕上指示一个点,或者您必须像在前几节中使用的那样指示一个锚点元素。

    截屏抓取

    截屏是一种从文档、网站和PDF中提取数据的方法。这是一种非常强大的提取文本的方法。我们可以使用Screen Scraper向导提取文本。Screen Scraper向导有三种刮取方法:

    • Full Text
    • Native
    • OCR

    我们将逐一阐述这些方法中的每一种。人们应该清楚地了解这些方法,以便知道何时使用哪种方法。在某些情况下,我们必须根据自己的需求选择最佳方法:

    • 全文:全文活动用于从各种类型的文档和网站中提取信息。它有100%的准确率。这是三种方法中速度最快的一种。它甚至可以在后台工作。它还能够提取隐藏的文本。但是,它不适合Citrix环境。
    • Native:这与全文方法类似,但有一些不同。它的速度比全文方法慢。它有100%的准确率,就像全文方法一样。它在后台不起作用。与全文方法相比,它的优势在于它还能够提取文本的位置。它无法提取隐藏的文本。它也不适用于Citrix环境。
    • OCR:当前两种方法无法提取信息时,使用此方法。它使用两个OCR引擎:微软OCR和谷歌OCR。它还有一个缩放属性:您可以根据需要选择缩放级别。更改比例属性将获得最佳结果:

    让我们考虑一个从UiPath网站主页提取文本的示例:

    1. 创建一个Blank项目,并给它一个有意义的名称。
    2. 通过在浏览器中登录https://www.uipath.com来登录UiPath网站。
    3. 将流程图活动拖放到“设计器”面板上。单击屏幕剪贴图标,找到要提取信息的区域。只需在UiPath网站上选择一个区域。AUTOMATIC方法未能抓取此UI元素将弹出一个窗口。
      默认情况下,Screen Scraper Wizard会选择最佳的抓取方法来提取数据,但在我们的案例中,它未能做到这一点:
    4. 请尝试选择其他方法。我们将选择全文法。这也会失败。接下来,选择Native方法。这也将失败,如您在以下屏幕截图中所见:
    5. 这一次,选择OCR抓取方法。您可以清楚地看到提取的文本:

    何时使用OCR

    在某些情况下,“获取文本”和“单击文本”等常规活动无法提取文本或执行操作。当OCR出现时,我们可以灵活地在现有活动无法完成任务时执行操作。

    OCR代表光学字符识别。它是一种文本识别技术,可以将扫描的打印文档转换为电子格式。

    OCR主要用于图像、扫描文档、PDF等,以提取信息或执行操作。从图像、扫描文档或PDF中提取信息或数据是一项非常乏味的工作。不建议使用常规活动来提取这些类型的输入。OCR使用不同的方法和方法来提取信息。

    UiPath Studio中有两个可用的OCR:

    • Microsoft OCR
    • Google OCR

    微软的OCR被称为MODI,谷歌的OCR被称作Tesseract。OCR不是仅限于这两种类型的OCR。您可以自由使用其他类型的OCR。

    让我们看一个应该何时使用OCR的示例。

    考虑使用“获取文本”活动从Word文档中提取一些文本:

    1. 创建一个Blank项目,并给它一个有意义的名称。
    2. 将流程图活动拖放到“设计器”面板上。此外,在“设计器”面板内拖放“获取文本”活动。现在右键单击“获取文本”活动,然后选择“设置为开始节点”。
    3. 双击“获取文本”活动。单击屏幕上的指示。现在指示要从中提取信息的文本。您必须提供用于从“获取文本”活动接收文本的输出值。创建一个GenericValue类型的变量,并指定变量名称str。
    4. 拖放消息框活动。将其连接到“获取文本”活动。双击Message box活动并指定您之前创建的变量名称(str):

    点击Run按钮查看结果。您可以在本例中清楚地看到,使用“获取文本”活动并不能正确提取文本。

    在下一节中,我们将看到使用OCR提取文本。

    可用的OCR类型

    在我们的UiPath Studio中有两个可用的OCR:

    • Microsoft OCR
    • Google OCR

    然而,我们可以自由地将其他OCR引擎导入到我们的项目中。

    微软和谷歌的OCR引擎都有各自的优点和缺点。谷歌OCR的优势包括以下几点:

    • 可以在Google OCR中添加多种语言支持
    • 适用于从小区域提取文本
    • 它完全支持颜色反转
    • 它只能筛选允许的字符

    Microsoft OCR的优点包括:

    • 默认情况下支持多种语言
    • 它适用于从大区域提取文本

    OCR并非100%准确。它可用于提取其他方法无法成功提取的文本。它适用于所有应用程序,包括Citrix。

    微软和谷歌的OCR并不是适合所有情况的。有时,我们必须寻找更高级的OCR来识别更复杂的文本,例如手写文档等等。

    UiPath Studio中还有另一种OCR,称为Abbyy OCR引擎。您可以在“活动”面板中搜索OCR来找到此OCR引擎。

    如果在“活动”面板中找不到此OCR,则需要安装UiPath.core.Activities软件包:

    在前面的屏幕截图中,软件包已经安装,这就是为什么在右侧有uninstall的按钮。

    如何使用OCR

    在本节中,我们将了解如何使用OCR。假设我们有一个图像,我们必须提取其中的文本。在这种情况下,OCR变得非常方便。

    在下面的例子中,我们将使用一个随机的谷歌图像,其中包含一些文本,如下所示:

    要从上一张图像中提取文本,请执行以下步骤:

    1. 打开UiPath Studio,然后单击空白项目。给它取一个有意义的名字。在“设计器”面板上,拖放流程图活动。
    2. 接下来,从Activities(活动)面板中拖放Get OCR Text(获取OCR文本)活动,并将其设置为开始节点。双击它,然后单击“在屏幕上指示”选项。选择要从图像中提取文本的特定区域。在我们的案例中,我们使用的是我们在谷歌上搜索过的图像。
    3. 现在,单击“获取OCR文本”活动的“文本”属性。将弹出一个窗口,如以下屏幕截图所示。在窗口内单击鼠标右键,然后选择“创建变量”。给它一个有意义的名称,按Enter键,然后单击“确定”按钮。将使用该名称创建一个变量:
    4. 拖放“消息框”活动。将其连接到“使用文本获取OCR”活动。双击“消息框”活动,并指定先前在表达式框中创建的变量名。(在我们的例子中,它是result变量)。
    5. 按F5键查看结果。

    尝试更改OCR引擎的比例属性。在某些情况下,它会给你更好的结果。

    避免典型故障点

    在许多情况下,正常的实施都会失败。我们将讨论这些失败点,看看如何解决它们。

    在本节中,我们将与以下实体合作解决故障点:

    • Selectors
    • Scope of the variable
    • Delay
    • Element Exists
    • Try/Catch
    • ToString()方法

    Selectors

    有时,在处理选择器的同时处理它们是乏味的。这是因为选择器具有属性、标题和类属性。当我们使用选择器选择一个UI元素时,它会存储所有这些属性。应用程序的不同实例可能具有UI元素的不同属性。

    选择器的问题在于,当您选择一个UI元素时,它会捕获其属性。当我们使用选择器选择应用程序的不同实例的UI元素时,这些属性将有所不同。因此,属性将不同,选择器将无法识别应用程序的另一个实例的相同UI元素。

    我们可以通过使用通配符或将其附加到活动元素来轻松解决此问题。UiPath提供两个通配符:

    1. 问号?, 替换一个字符
    2. 星号*,替换了多个字符

    我们必须简单地用通配符替换变量(不断变化的名称)。

    我们还可以使用选择器属性窗口中的Attach to live元素选项,并再次指示该元素。它会自动检测变量属性并为我们修复它们。

    Scope of the variable

    有时我们会在Sequence或Do活动中创建一个变量。在这样做的过程中,变量的范围仅限于该活动。

    当我们试图从变量的作用域之外访问变量时,它是无法访问的。我们必须更改变量的范围。

    Delay activity

    在某些情况下,我们不得不等待特定的行动。例如,打开Outlook应用程序时,它需要连接到服务器(用于同步)。当它被打开时,需要一些时间(UI元素在这个阶段并不稳定)。

    与此同时,机器人的活动正在等待UI元素稳定,以便它可以执行操作。等待一段时间后,如果UI元素不稳定,则会导致错误,因为活动找不到UI元素。因此,我们必须添加一个Delay活动,以确保UI元素对于操作是稳定的。在“延迟”活动的表达式文本框中指定延迟的时间。此活动将使流程延迟指定的时间段。

    Element Exists

    此活动用于确保所需元素存在。它用于确保我们正在寻找的元素在此上下文中存在。

    这是检查活动是否存在的好方法。

    Try/Catch

    这是一种用于处理异常的异常处理机制。

    将所有可疑活动放在Try块内。如果发生错误,可以通过Catch块。

    ToString

    有时,我们忘记使用带有变量的ToString方法,结果会出现错误。
    例如,当在Message框中输出一个整数变量时,我们必须应用ToString方法。

    总结

    在本章中,我们了解了UiPath中可用的各种类型的控件,包括鼠标和键盘活动的类型。我们还重新访问了UiPath Studio的录制功能,这次学习了更高级的功能。UiExplorer是我们尝试的另一个主题,它基本上用于自定义选择器。此外,我们还了解了OCR、其类型及其用途。最后,我们处理了使用Screen Scratching提取数据的问题。

  • 相关阅读:
    mysqli_connect(): php_network_getaddresses: getaddrinfo failed:
    JAVA 版小程序商城免费搭建 多商家入驻 直播带货 商城系统 B2B2C 商城源码之 B2B2C产品概述
    【学习笔记】无人机系统(UAS)的连接、识别和跟踪(一)-3GPP TS 23.256 技术规范概述
    internship:术语了解及着手写接口
    计算机毕业设计Java大学生科技创新项目管理系统(源码+系统+mysql数据库+lw文档)
    爆火的治愈系插画工具又来了,额度居然有18w,根本花不完?
    如何提高社交产品的活跃度?
    python笔记
    华为云CodeArts Check代码检查插件(CodeArts IDE本地版本)使用指南
    CSDN高质量:备战金九银十的Java八股文,看完这篇就够了
  • 原文地址:https://blog.csdn.net/mwjcxl/article/details/133301387