到目前为止,您应该能够制作相当复杂的工作流,并使用控制流采取各种路径。您现在应该知道如何存储和评估变量以做出决策。我希望你广泛使用录音机,因为我们将在本章中重新访问录音机以了解更多信息。
在本章中,我们将详细介绍如何与UI中的控件进行交互。
有时,您可能需要单击特定按钮或从文本框中提取信息。要么我们对控件采取一些操作,要么我们读/写。我们将详细介绍如何准确地做到这一点。在本章中,读者将了解UiPath中可用于提取控件并对控件执行操作的各种选择器:
然后,我们将在新的背景下讨论录制。
提取是RPA的一个主要功能,可以实现UI自动化。在幕后,许多技术都在致力于从UI中无缝提取信息。当典型的RPA技术不成功时,使用OCR技术来提取信息。我们将在以下主题中学习如何使用OCR和其他技术:
在本节中,我们将使用“附加窗口”活动。
“附加窗口”活动可以在“活动”面板中找到。此活动通常用于附加已打开的窗口。当我们使用Basic或Desktop记录器记录操作时,它也是自动生成的。通过下一节的例子,你会有一个更清晰的想法。
在本例中,我们将手动使用“附加窗口”活动。在这里,我们将附加一个记事本窗口,然后在其中写入一些文本:(使用老版本创建)
有许多活动可用于查找屏幕/应用程序上的控件。这些活动用于查找或等待UI元素。
以下是有助于找到控件的活动:
我们将逐一讨论所有这些控制措施。
此控件用于通过查看旁边的UI元素来定位UI元素。当我们无法控制选择器时,会使用此活动。这意味着当我们没有可靠的选择器时,我们应该使用Anchor base控件来定位UI元素。
我们可以使用Anchor base控件,如下节所述:
此控件用于检查UI元素的可用性。它检查UI元素是否存在。如果UI元素存在,则返回布尔结果,然后返回true:否则,返回false。
您可以使用此控件来检查UI元素。事实上,将此控件用于未确认可用性或频繁更改的UI元素是一种很好的做法。
只需从Activities面板中拖放Element Exists控件。双击它。可以看到屏幕上有一个指示选项。单击它以指示UI元素。它返回一个布尔结果,您可以稍后从Exists属性中检索该结果。您只需要在属性面板的Exists属性中提供一个布尔变量。
此控件用于附加UI元素并对其执行多个操作。您可以在单个UI元素中使用一组操作。
拖放Element scope控件,然后双击此控件:
您可以清楚地看到,您必须通过单击屏幕上的指示并指定要在Do序列中执行的所有操作来指示UI元素。您可以在Do序列中添加许多活动。
此控件用于查找指定UI元素的所有子UI元素。它还检索子UI元素的集合。您可以使用循环来检查所有子UI元素,或者设置一些筛选条件来筛选出UI元素。
从“活动”面板中拖放“Find children”控件。
双击它以指示要指定的UI元素。您可以单击屏幕上的指示来指示:
您必须在children属性中提供类型为IEnumberable
此控件用于查找特定的UI元素。它等待UI元素出现在屏幕上,然后将其返回。
使用此控件的方式与使用其他控件的方式相同。只需拖放此控件,并通过单击屏幕上的“指示”来指示UI元素。
您可以在Find element控件的Found元素属性中指定UI元素类型的变量,以接收作为输出的UI元素。
此控件类似于Find element控件。唯一的区别是它使用相对固定的UI元素来正确识别UI元素。
此控件可用于没有可靠选择器的情况。
只需拖放此控件,并通过单击屏幕上的“指示”来指示UI元素。
您还可以在指示UI元素后查找其选择器属性,以便进行更好的分析。
此控件用于检索指定UI元素的祖先。您必须提供一个变量来接收祖先元素作为输出。您可以在Get祖先控件的Ancestor属性中指定变量名。
收到祖先元素后,可以检索其属性、属性等以进行进一步分析:
只需拖放此控件,并通过单击屏幕上的“指示”来指示UI元素。
此控件用于在运行时指示和选择UI元素或区域。它提供了在运行工作流时指示和选择UI元素或区域的灵活性。
您只需在项目中拖放此控件:
不要将其与在任何活动(如键入)内编写的“在屏幕上指示”混淆。在前面的例子中,我们在各种控件中使用了屏幕上的指示(如下面的屏幕截图所示)。此按钮用于在执行工作流之前定位区域或UI元素,而Indicate on screen控件在执行工作流之后执行其流程:
有三种技术可以让我们控制等待。它们是:
此活动用于等待某个元素从屏幕上消失。让我们看一个使用“等待元素消失”活动的示例:
“等待图像消失”活动类似于“等待元素消失”活动。此活动用于等待图像从UI元素中消失。
等待元素消失和等待图像消失活动之间的唯一区别是,前者用于等待元素消失,而后者用于等待图像消失。
此活动用于等待指定元素属性的值等于字符串。我们必须明确指定字符串:
在UiPath Studio中工作时,我们必须使用各种类型的控件,如查找控件、鼠标控件、键盘控件等,以实现任务自动化。在本节中,我们将实现鼠标和键盘的活动。
那些涉及与鼠标交互的活动属于鼠标活动的类别。
UiPath Studio中有三个鼠标活动:
当我们必须单击屏幕上的UI元素时,我们通常使用click活动。单击活动非常容易使用,如以下示例所示:
我们已经看到了Click活动。双击活动类似于单击活动。它只是执行双击操作。在项目中使用双击活动与单击几乎相同。您必须使用双击活动而不是单击活动,并指示UI元素,就像我们在上一个示例中所做的那样。
悬停活动用于将鼠标悬停在UI元素上。有时,我们必须将鼠标悬停在UI上才能执行操作。在这种情况下,可以使用悬停活动:
在自动化任务的同时,我们必须大量处理键盘活动。键盘活动通常涉及与键盘的交互。
在UiPath Studio中,以下是键盘活动:
此活动用于将键盘上的击键作为输入发送到屏幕。让我们举一个例子。
在以下示例中,我们将使用“发送热键”活动滚动主页:
要查看正确的结果,只需向下滚动网站即可。当这个活动完成它的工作时,你将能够区分网页位置的变化。
此活动用于在UI元素中键入文本。它还支持特殊键。
“键入”活动与“发送热键”活动非常相似。我们必须把按键和特殊按键一起发送。特殊钥匙是可选的:
您可以使用此活动,只需将Type拖放到活动中,并通过单击+图标并从下拉列表中选择键来指定键击和特殊键(如果您也希望发送特殊键)。您还必须在屏幕上指示要键入文本的区域。
此活动用于向UI元素发送安全文本。它以安全的方式发送字符串:
我们尚未为SecureString型Variable1赋值。在企业场景中,您将使用“获取凭据”活动。当我们必须使用Orchestrator时,会使用“获取凭据”活动。我们将在本书后面了解Orchestrator。
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中有四种类型的录制:
这用于记录具有单个窗口的应用程序的操作。基本录制使用完整的Selector。它对执行单个操作的应用程序更有效。它不适合具有多个窗口的应用程序。
选择器有两种类型,部分选择器和完全选择器。完全选择器具有识别控件或应用程序的所有属性。基本录制使用完整的选择器。
请注意,在上图中,有不同的活动,但这些活动没有包装在容器中,它是由Basic记录器生成的。基本记录生成不同的活动,并将它们直接放置在具有完整选择器的序列中。
您已经了解了如何使用Basic记录器自动执行任务;现在,让我们来谈谈其他录制器。
这类似于基本录制,增加了处理多个操作的优势。它最适合自动化桌面应用程序。
桌面记录器生成部分选择器。Partial选择器具有层次结构。它们被拆分为父子视图,以便正确识别UI元素。
请注意,在上图中有一个Attach Window活动,其他活动嵌套在它下面。此流是由桌面记录器生成的:
可以使用Web记录器进行Web录制。为了记录web操作,应该安装该浏览器的UiPath扩展插件。否则,您将无法使用Web记录自动执行任务或操作。
你只需要点击安装图标,然后点击安装扩展。现在,选择您的浏览器并单击它。UiPath扩展名将添加到您指定的浏览器中。
Web录制类似于桌面录制。您只需要记录操作并保存即可。
创建一个空白项目。拖放流程图活动。现在,单击录制图标并选择Web录制。你可以自己在网上记录你的行为,然后保存。在我们的案例中,我们使用浏览器打开了一个网页,并登录到www.baidu.com. 然后,我们通过单击Web记录器的“录制”按钮开始录制。接下来,我们在百度的搜索栏中键入一些文本,并执行单击活动。然后,我们按下Esc键退出录制,然后单击“保存并退出”按钮。现在,在我们的Designer面板中生成了一个录制序列。将此序列连接到“开始”节点。点击Run按钮查看结果。在下面的屏幕截图中,您可以看到Web记录器生成的序列:
在运行UiPath工作流之前,请确保您在百度主页上。
我们已经看过web Recording,它非常容易。还有另一种从网站中提取信息的选项。
我们可以使用数据抓取轻松地从网站中提取信息。
假设我们想从亚马逊的网站上提取数据。假设我们想在亚马逊上搜索书籍并提取搜索结果。通过数据抓取,从网站中提取数据变得非常容易:
处理远程桌面连接时,不能使用“基本录制”和“桌面录制”等方法。在RDP环境中,图像将从一个桌面发送到另一个桌面,并通过分析鼠标按钮指针的位置进行映射。因此,不能使用基本和桌面记录,因为这些记录技术无法与图像交互。在Citrix环境中,我们有“单击文本”和“单击图像”活动,使用它们我们可以轻松地处理图像。
您可以清楚地看到Citrix录制中列出的活动:
所有这些活动都在Citrix环境中广泛使用。
您可以像使用基本录制或桌面录制一样使用这些活动:唯一的区别是您必须在屏幕上指示一个点,或者您必须像在前几节中使用的那样指示一个锚点元素。
截屏是一种从文档、网站和PDF中提取数据的方法。这是一种非常强大的提取文本的方法。我们可以使用Screen Scraper向导提取文本。Screen Scraper向导有三种刮取方法:
我们将逐一阐述这些方法中的每一种。人们应该清楚地了解这些方法,以便知道何时使用哪种方法。在某些情况下,我们必须根据自己的需求选择最佳方法:
让我们考虑一个从UiPath网站主页提取文本的示例:
在某些情况下,“获取文本”和“单击文本”等常规活动无法提取文本或执行操作。当OCR出现时,我们可以灵活地在现有活动无法完成任务时执行操作。
OCR代表光学字符识别。它是一种文本识别技术,可以将扫描的打印文档转换为电子格式。
OCR主要用于图像、扫描文档、PDF等,以提取信息或执行操作。从图像、扫描文档或PDF中提取信息或数据是一项非常乏味的工作。不建议使用常规活动来提取这些类型的输入。OCR使用不同的方法和方法来提取信息。
UiPath Studio中有两个可用的OCR:
微软的OCR被称为MODI,谷歌的OCR被称作Tesseract。OCR不是仅限于这两种类型的OCR。您可以自由使用其他类型的OCR。
让我们看一个应该何时使用OCR的示例。
考虑使用“获取文本”活动从Word文档中提取一些文本:
点击Run按钮查看结果。您可以在本例中清楚地看到,使用“获取文本”活动并不能正确提取文本。
在下一节中,我们将看到使用OCR提取文本。
在我们的UiPath Studio中有两个可用的OCR:
然而,我们可以自由地将其他OCR引擎导入到我们的项目中。
微软和谷歌的OCR引擎都有各自的优点和缺点。谷歌OCR的优势包括以下几点:
Microsoft OCR的优点包括:
OCR并非100%准确。它可用于提取其他方法无法成功提取的文本。它适用于所有应用程序,包括Citrix。
微软和谷歌的OCR并不是适合所有情况的。有时,我们必须寻找更高级的OCR来识别更复杂的文本,例如手写文档等等。
UiPath Studio中还有另一种OCR,称为Abbyy OCR引擎。您可以在“活动”面板中搜索OCR来找到此OCR引擎。
如果在“活动”面板中找不到此OCR,则需要安装UiPath.core.Activities软件包:
在前面的屏幕截图中,软件包已经安装,这就是为什么在右侧有uninstall的按钮。
在本节中,我们将了解如何使用OCR。假设我们有一个图像,我们必须提取其中的文本。在这种情况下,OCR变得非常方便。
在下面的例子中,我们将使用一个随机的谷歌图像,其中包含一些文本,如下所示:
要从上一张图像中提取文本,请执行以下步骤:
尝试更改OCR引擎的比例属性。在某些情况下,它会给你更好的结果。
在许多情况下,正常的实施都会失败。我们将讨论这些失败点,看看如何解决它们。
在本节中,我们将与以下实体合作解决故障点:
有时,在处理选择器的同时处理它们是乏味的。这是因为选择器具有属性、标题和类属性。当我们使用选择器选择一个UI元素时,它会存储所有这些属性。应用程序的不同实例可能具有UI元素的不同属性。
选择器的问题在于,当您选择一个UI元素时,它会捕获其属性。当我们使用选择器选择应用程序的不同实例的UI元素时,这些属性将有所不同。因此,属性将不同,选择器将无法识别应用程序的另一个实例的相同UI元素。
我们可以通过使用通配符或将其附加到活动元素来轻松解决此问题。UiPath提供两个通配符:
我们必须简单地用通配符替换变量(不断变化的名称)。
我们还可以使用选择器属性窗口中的Attach to live元素选项,并再次指示该元素。它会自动检测变量属性并为我们修复它们。
有时我们会在Sequence或Do活动中创建一个变量。在这样做的过程中,变量的范围仅限于该活动。
当我们试图从变量的作用域之外访问变量时,它是无法访问的。我们必须更改变量的范围。
在某些情况下,我们不得不等待特定的行动。例如,打开Outlook应用程序时,它需要连接到服务器(用于同步)。当它被打开时,需要一些时间(UI元素在这个阶段并不稳定)。
与此同时,机器人的活动正在等待UI元素稳定,以便它可以执行操作。等待一段时间后,如果UI元素不稳定,则会导致错误,因为活动找不到UI元素。因此,我们必须添加一个Delay活动,以确保UI元素对于操作是稳定的。在“延迟”活动的表达式文本框中指定延迟的时间。此活动将使流程延迟指定的时间段。
此活动用于确保所需元素存在。它用于确保我们正在寻找的元素在此上下文中存在。
这是检查活动是否存在的好方法。
这是一种用于处理异常的异常处理机制。
将所有可疑活动放在Try块内。如果发生错误,可以通过Catch块。
在本章中,我们了解了UiPath中可用的各种类型的控件,包括鼠标和键盘活动的类型。我们还重新访问了UiPath Studio的录制功能,这次学习了更高级的功能。UiExplorer是我们尝试的另一个主题,它基本上用于自定义选择器。此外,我们还了解了OCR、其类型及其用途。最后,我们处理了使用Screen Scratching提取数据的问题。