使用UiPath和AA构建的解决方案 6. 完成RPA挑战
我们参与了本书的最终一个UiPath项目——RPA挑战。
该项目同时也是我们Automation Anywhere项目的启动点,
由于我们将与A2019共同发起RPA挑战。
本RPA相关内容章节旨在向您展示在表单中处理动态元素的基本概念。该挑战包含字段呈现出动态变化的特点,并提供了一种探索最新取得UiPath Web Automation技能的机会。此外,我们将利用这一挑战作为起点,在自动化领域进行深入学习和实践操作。因此,请注意观察如何在新的平台上应对类似的挑战,在后续章节中我们将深入探讨这一主题。
本应在rpachallenge.com上进行的挑战已经确定下来。
网站提供一组可以通过任何RPA工具完成的练习项目。
为了应对输入表单带来的挑战,
我们需要构建一个自动化系统来从电子表格提取数据
并将这些数据输入到网站的一组10个动态表单中。
作为学习实践,
这个项目将详细讲解基本操作步骤。
我们计划首先使用UiPath来实现这一目标,
随后再尝试用Automation Anywhere.
以下是我们将在本项目中介绍的内容:
- UiPath的Web自动化
- Automation Anywhere A2019的Web自动化
- 将数据输入至动态字段中
- UiPath的Excel操作
- Automation Anywhere A2019的Excel操作
技术要求
- RPA挑战平台Rpa Challenge
- 获取参与RPA测试所需Excel文件的资源链接
- 支持安装的微软Excel版本包括2007及其以上版本
- 在满足以下条件的情况下安装UiPath社区版:软件版本需为19.10.0或更高
- 配置好UiPath扩展包的谷歌浏览器
- Automation Anywhere A Anywhere 2019社区版。在Login Template Title上注册
- 已安装A Anywhere 2019机器人程序代理。确保在‘我的设备’选项卡中看到客户端机器处于活动状态(显示绿色)


项目详细信息
我们从RPA挑战网站提供的电子表格文件中提取数据,并将其录入指定的数据录入界面。
表单中的输入字段在每次提交时会重新定位到屏幕上。这正是由于与其相比我们已完成的所有项目中这类数据输入所面临的难度。在这项挑战中,在您获得最终结果前共有10次数据输入任务。我们的目标是在最短时间内尽可能准确地完成这一挑战。
据以往经验所述, 我们计划进行一些基础性工作后, 并将采用UiPath和Automation Anywhere来完成任务。
项目基础工作
如同其他项目一样, 本流程将从一些基本工作阶段开始. 首先, 请登录rpachallenge.com网站, 单击下载Excel按钮以获取所需数据表格. 该表格位于左侧窗格底部位置, 在挑战描述下方位置. 下载完成后, 您需查看Excel表格文档并将该文件夹移动至项目目录中以便后续操作. 该文件的具体内容如下:

现在我们有了Excel文件,让我们使用UiPath创建自动化。
使用UiPath完成挑战
让我们从使用UiPath构建RPA挑战自动化开始。
使用UiPath项目
与所有UiPath项目一样,我们将从创建项目开始:
- 在Studio创建一个新的UiPath项目,并将其命名为rpahallenge。
- 在Main序列中,请添加一个Try-Catch活动以捕获所有异常。
- 现在,请处理Catches块中的任何异常。
a. 继续为Exception新增一个catch以捕获特定错误信息。
b. 在消息框中显示错误信息并附上错误代码。
到目前为止,您的工作流程应该是这样的:

既然我们已经处理了这个异常,让我们进入自动化的重要部分。
创建挑战自动化
我们计划在主工作流程中的相关环节实施自动化处理流程的设置。首先处理的是读取Excel文件的过程,并将其填写的动态表单所需的输入数据会被系统性地记录下来。
读取RPA挑战Excel数据
我们采用"数据范围"活动来获取Excel内容。以下将介绍创建UiPath自动化流程的详细步骤:
现在我们将输入Excel文件的数据导入到新创建的数据表变量中,并启动"读取范围"活动以更新其属性。
- 单击并选择RPA挑战Excel工作簿的位置。
- 在工作簿中选定需读取的数据范围。
- 请确认AddHeaders处于选中状态。
- 将Output赋值给新的dataTable变量。
以下是我们迄今为止的工作流程:

我们把从Excel导入的数据放入名为dataTable的变量中。接下来我们将逐一处理每一条记录,并将其发送至网站上的表格字段中。
将数据输入RPA挑战表单
在当前位置采用UiPath的Anchorbase活性化组件来进行表单标签的查找操作。选择此方法的原因在于字段的位置可能变化,并且目前缺乏可靠的定位手段来识别这些字段。
请启动谷歌Chrome浏览器并访问rpachallenge.com网站。为此,请在活动列表中添加一个“使用浏览器”任务,并将其类型设置为Chrome,并将目标网页地址指定为RPA挑战网站的URL位置。
接下来,请在活动列表中添加一个Click动作,并指向RPA挑战页面上的START按钮位置。
最后,请确保在ForEach活动中添加一行数据记录,并将表单字段值更新为从dataTable变量读取的数据。

为了实现以下功能:将一个名为"更新表单序列"的新序列添加至主体序列中,并在其内部新增一个"基础锚点"活动。该活动中需设定ContinueError为False,并将. AnchorPosition设为Auto
我们需要使用已添加的第一个Anchor Base活动来填充表单中的第一个姓名字段的值。为此,请在Anchor Base中新增一个Find Element活动。在此活动中,在表单中标注"姓名"标签。然后转至"目标"下的Selector属性,并将其名称设置为"姓名"(以及其他参数),如图所示:

既然已经设置好了锚点位置,在活动属性中添加Type字段以赋值给First Name字段,并将其关联到对应的数据行。为此,请选择并标记"名字"标签旁边的文本框区域,并在代码块中修改其数值属性为Convert.ToString(row["First Name"])。这样做会自动将第一行的数据导入到First Name字段中

- 现在,请我们输入其余六个字段的数据:姓氏、公司名称、在其公司担任的角色职位、办公地址、电子邮箱以及联系方式。
然后,在每个锚点Base活动中重复之前的步骤以获取标签,并将其填入相应的字段中。 - 最后一步,请我们在rpachallenge.com网站上提交表格。
首先创建一个"单击"动作,并点击"提交"按钮。
这就是情况。我们已成功实现了针对RPA挑战的UiPath自动化,并且正在准备下一步骤——请让我们继续测试它。
测试UiPath挑战自动化
要测试UiPath自动化,请继续从Studio运行自动化:
- 单击启动(执行)。您也可以按下快捷键Ctrl+F5。rpachallenge.com网站将在Chrome浏览器中正确打开。
- UiPath自动化系统将通过精确识别并定位每个表格中的正确元素来进行数据填充工作。
当遇到任何问题时,系统会生成一个异常提示框并详细描述该异常情况。为了确保完成目标,请在两分钟内严格控制进度并实现100%的成功率。操作完成后,请您接收一条确认信息,并准确告知所需时间资源消耗情况。
通过使用UiPath成功地实现了RPA挑战的基本版本。现在,请及时回溯在转向 Automation Anywhere之前所完成的UiPath项目的相关内容。
概括UiPath项目
我们在这本系列中完成了五个不同的项目,具体如下:
- 我们实施了有人值守与无人值守两种形式的自动化方案。
- 我们进行了从基础到高级的Excel及Web自动化项目的深入研究。
- 在社交媒体审核项目中,我们重点利用了谷歌云API实现 automation.
- 我们的开发团队被介绍给ReFramework,并掌握了与UiPath编排器队列交互的技术要领.
- 在本章的学习过程中,在线RPA挑战帮助我们掌握处理网页动态元素的技术方法.
随后, 让我们深入探索自动化Anywhere云A2019平台, 并掌握使用Automation Anywhere实现这一目标的方法.
Automation Anywhere A2019
正如我们在第1章RPA入门中所学习并掌握的知识所展示的那样,在自动化测试领域中存在另一种广为应用的工具。 Automation Anywhere也提供另一种基于Web自动化测试解决方案,并将在我们的项目中基于Automation Anywhere A2019社区版执行自动化测试任务。
如前文所述,在A2019系统中有一个专门用于机器人开发与部署的基于网络的Control Room。由此可见,在该环境中我们主要将执行任务于浏览器中,并非像我们在UiPath中使用本地Windows客户端的做法如此操作
在第1章RPA入门章节中讲解了控制室的基本概念及其主要功能模块。
作为本章节的重要内容之一, 我们将为您演示如何完成注册与配置过程。
建议您尽快完成A2019的配置, 因为在随后应用Automation Anywhere平台进行自动化操作时, 该功能将发挥关键作用, 并能显著提升您的工作效率。
一旦您设置好了,我们就可以开始一些Automation Anywhere A2019项目了。
使用Automation Anywhere完成挑战
因为这是我们起始的第一个Automation Anywhere项目,请从评估A2019设置开始。
Automation Anywhere控制室入门
基于A2019采用了云端版本,因此我们将主要依赖Web浏览器来进行工作.请按照以下步骤启动操作.
通过浏览器访问A2019社区版本,请访问以下链接:https://community.cloud.automationanywhere.digital/#/login。
如有未注册A2019社区版的情况,请访问本章"技术要求"部分的相关链接进行注册流程。系统会发送一封包含控制室URL及登录凭证的电子邮件。首次登录时,请注意系统会引导您完成第一个机器人的创建步骤。
请按照指示构建您的第一个机器人程序,并安装用于允许控制器连接到您的电脑的机器人程序代理。
当您登录后, 系统会自动转导您至A2019基于网络的控制室;这是一个专门供您进行机器人搭建、设置以及维护和操作的地方。控制室内的仪表板会向您呈现相关的运行数据

建议首先检查你的电脑是否已连接至控制室。假设您已完成首次机器人程序运行(如前所述),否则请执行以下操作。转至左侧窗格的MY DEVICES选项。确认您的电脑显示绿色的"已连接"状态。如图所示:

若系统未联机,请在Windows环境中再次启动Automation Anywhere机器人程序代理服务。如果该操作未能解决问题,请考虑进行软件更新以修复潜在的问题。
现在我们已经设置了A2019控制室,让我们创建我们的RPA挑战机器人。
创建RPA挑战自动化机器人
请在浏览器的控制台界面中搭建一个智能机器人模型。依照下面的操作指南,请依次执行每一步骤。
在A2019监控中心界面中切换至左边工作区的主页面选项。
进入该操作流程后,请点击生成机器人设置界面。

- 请为您的机器人程序起一个名称后点击创建机器人程序…这将引导您进入编辑任务机器人程序界面,在那里您可以配置自动化功能。
- 首先,请您在"操作"窗格中搜索并找到"消息框"这一项。将它拖动到工作流程图上,并根据需求配置相关属性。
- 设置输入消息以显示"A2019 Bot is Attempting RPA Challenge"。
- 确保勾选Close message box after选项,并设置好时间使其在5秒后自动关闭消息框。

- 点击"保存"按钮完成对机器人的程序存储。然后点击Run按钮启动机器人程序。系统将下载所选的程序包到机器人的代理节点,并显示已添加的消息:

现在让我们转至机器人创建画布上的列表式布局。我们主要将此布局作为实现自动化流程的核心工具。

A2019包含三种类型的视图:流视图、列表视图以及双联式布局。在项目的运行过程中,您可以根据需要切换不同的视角来观察数据流。项目管理过程中,在线演示将展示“列表”模式及其与“数据流”相关的功能布局。
- 在引入任何自动化逻辑之前, 我们现在开始处理任何异常情况. 首先, 我们会搜索并新增"尝试"操作. 然后, 我们会将现有消息框转移至错误处理程序中的try块, 并在此处加入所有自动化逻辑.
- 接下来, 在try块下方新增catch操作. 确保其异常类型设为All Errors, 然后创建名为errorMessage的变量用于存储错误信息.
- 在catch块内部新增一个消息框, 其中包含
Following Error Happened errorMessage
消息。到目前为止,您的自动化将如下所示:

现在, 我们已完美完成机器人执行其初始任务的所有步骤, 并因此启动自动化的整体框架搭建过程. 为此, 我们将从解析Automation using RPA to parse Excel files. 开始下一步操作.
读取RPA挑战Excel数据
本节内容涉及利用RPA系统对Excel文件执行质询操作以获取所需输入数据的过程,并将这些收集到的数据系统性地记录于预设的数据表格内。本节内容涉及利用RPA系统对Excel文件执行质询操作以获取所需输入数据的过程,并将这些收集到的数据系统性地记录于预设的数据表格内。
在操作面板中使用Excel Basic功能来搜索所需Excel操作。通过新增一个名为"打开Excel文件"的操作来启动指定的Excel文件。请添加以下属性:
- 将会话名称设为S1编号。
- 访问并选择您的RPA挑战相关Excel文件。
- 选择只读模式打开该文件。
- 确认图纸中是否存在页眉选项:

- 执行'Get multiple Cell'操作以便捕获Excel数据至数据表变量中。对于此操作,请将Session名称设定为S1并配置Loop-through模式选择Specific行(具体地,在From行处输入起始索引值1并在To行处设定结束索引值11)。建议在Assign value to the variable(可选)字段中创建一个命名为 excelTable 的数据表变量以完成数据存储过程,请参见下图以获取详细指导:

最后,在Excel的基础步骤下执行关闭'close'操作以退出程序,并将会话名称设置为S1。

已将Excel数据录入到 excelTable 变量中,请启动浏览器窗口并运行网页应用挑战测试任务。
准备RPA挑战网站以供输入
Now, the system will automatically scan the RPA challenges data from the excelTable variable and input it into the corresponding input fields on the RPA Challenges website. Please ensure that the system opens automatically before starting the operation, and then click the START button to begin.
请配置'Browser:open'步骤,并将http://www.rpachallenge.com/设置为URL属性值;同时,请指定使用Internet Explorer浏览器。

访问rpachallenge.com这个目标网站时,请确保浏览器已准备好使用。启动该操作时,请单击网站上的"开始"按钮。请按照以下步骤配置recorder-capture功能以完成任务:在捕获属性中,请选择"对象详细信息"属性中的子属性为'窗口'选项。然后,请点击右侧的刷新输入框图标。接下来,在下拉列表中找到并选中RPA Challenge-Internet Explorer窗口选项。
最后, 单击捕获对象并指向浏览器上RPA挑战网站上的"开始"按钮:

- 建议您点击"Start"按钮。请更新捕获对象的选择器属性。检查HTML标记及InnerText属性,并为Action属性选择Click:

当前网站已正式上线,并已准备好接收输入数据。请我们采用迭代方法,并从挑战表单中获取所需的数据。
遍历每一行和每一列
现在让我们循环浏览整个数据表变量,将Excel数据输入RPA挑战网站:
实施循环操作。将Iterator属性设置为逐行遍历表中的每一行,并将table变量赋值为 excelTable与当前表格的差集;随后创建一个新的Record对象currentrow

在自动化过程中,请添加将被用于计数器的两个变量。请创建一个名为currentIteration且类型为Number的变量,并被选为输入和输出用途。接下来,请引入另一个名为counterstring且类型为String的变量。该变量子代currentIteration保持相同的值,并仅区别在于它们的数据类型不同:
\text{counterstring} = \text{currentIteration}

在循环期间,我们首先将初始化一个新的计数器。随后转向列表视图,在此界面内编写一段代码以跟踪进度。接着,在Number操作之后新增Assign操作,并将其与currentIteration属性关联起来。

接下来,在Table变量中依次处理每行每列的数据。为此,请引入第二个循环结构,并将Iterator赋值为For遍历记录的结果;同时将其赋值给currentrow变量;最后创建名为excelColumn的新变量来存储相关数据:

我们还需要在If条件中应用迭代计数器以字符串形式存在。为此,在逻辑判断语境下引入一个Number转为String的操作。如图所示进行配置:

最后一步是定义一个新的名为Any类型的CurrentColumnName的新变量,并将其存储为Table变量中的列名字段。之后,在项目实施过程中我们将利用此ColumnName变量来将表单中的表头名称映射至RPA挑战网站的标签区域。
现在我们已经设置了循环,让我们添加读取和映射列的逻辑。
遍历每列并读取标题
现在我们开始依次查看每一行中的各列数据。随后,在Excel表格中我们将这些列与对应的标题建立关联关系。最终,在RPA挑战网站上为每个输入字段分配这些列作为参数来源。
采用If条件和一系列Else-If条件将迭代计数器与标头一一对应,并如示例所示进行配置:counter编号1对应于First Name字段, counter编号2对应于Last Name字段.请按照以下所述步骤执行操作:
本段将首先介绍如何添加If操作。我们将会验证第一列的字符串是否等于1。为此目的,我们需要配置以下属性:Condition字段设为String类型的条件 Source变量名称设为counterstring 运算符设置为等式比较 目标值设为1 这应当呈现出如下的屏幕截图形式:

接下来,在位置1处的第一个单元格确定为"名字"。为此,在If条件中添加一个String Assign操作,并将其设为First Name

- 既然我们已经指定了行中的第一列,请让我们对其他列实现同样的操作。我们将通过Else If条件来实现此操作。
对于第二列,请引入一个Else If操作,并按照以下方式设置属性:
Condition: String condition
Source value: counterstring
Operator: =
Target value: 2

当Else If条件满足时,在此情况下,请我们执行另一个String Assign操作,并将CurrentColumnName字段命名为Last Name。

您明白了吗?请继续对其他五列执行Else If操作。具体来说,请执行以下字符串分配操作:将'Company Name'字段赋值给相应的变量;将'Role in Company'字段赋值给相应的变量;将'Address'字段赋值给相应的变量;将'Email'字段赋值给相应的变量;以及将'Phone Number'字段赋值给相应的变量(如图所示)。

在此处迭代时使用的当前列名已保存于CurrentColumnName变量中。我们计划利用该列名称来审查相关RPA 挑战字段,并输入所需的数据。例如,在迭代过程中遇到"Last Name"这一特定情况时,在RPA挑战网站上我们会特别标记出"Last Name"字段。
将挑战数据映射并输入到网站
请将屏幕上的输入字段与目标列的数据对应起来。我们可以借助HTML中的Tagindex属性来识别并关联这些输入字段。
为了获取字段标签索引的信息,请先执行以下操作:首先,在工作流中添加一个名为"Capture"的操作节点。然后,在该节点属性中指定"Last Name"字段对应的标签名称。接着,在捕获属性下设置相应的参数值为"Rpa Challenge-Chrome for Window"。最后,在此节点上运行操作即可完成捕获过程。

在Recorder属性设置中心,在 recorder 的 HTML 体内文本赋值为 currentColumn 名称的同时创建一个变量用于存储字段对应的 HTML 标记索引值。我们将该字段命名为 htmlTagIndex 变量。为了实现自动化处理当前列的内容,请确保只选中以下屏幕截图中显示的5个属性中的相应项并完成后续操作

- 现在我们拥有了一个字段标签的索引值(HTML Tagindex),现在是时候将Excel的工作表列标题映射到相应的输入框上。为了实现这一目标,请添加一个额外的捕获操作。
- 下一步是将之前填充好的htmlTagIndex变量所指定的位置进行数据填充工作。具体来说,在某些情况下(例如当该变量值为5时),我们需要从与"姓氏"列相对应的位置提取数据并将之赋值给当前单元格的内容。
- 需要特别注意的是,在执行完上述步骤后,请确保屏幕界面与以下提供的屏幕截图一致,并且只显示当前所涉及的相关属性。

为了让Record循环持续运行,请确保我们通过增加currentIteration变量的计数器来实现这一目标。通过引入一个用于跟踪迭代次数的新计数器,并将其赋值为当前迭代号加一(即currentIteration+1),我们可以有效管理循环流程。

完成后,在所有表单填完后点击提交按钮。接着,在捕捉属性中指定目标窗口,并在RPA挑战页面上捕捉该窗口中的提交按钮

通过选择必要的属性来捕获所需的信息。如以下屏幕截图所示,请确保使用"单击以触发操作"的方式来实现点击功能。

机器人系统的运行流程需进行详细列举,并应在当前界面中呈现出来以确保完整性。
将影像数据分别处理并展示出来会更加清晰明了。
第一部分:

第二部分:

至此,在应对RPA挑战的过程中自动化解决方案中的utomation Anywhere脚本编写已完成,请立即启动测试流程
测试Automation Anywhere挑战自动化
现在让我们在A2019中运行RPA挑战自动化:
- 单击菜单栏顶端的Run按钮。
- 控制器首先负责将机器人部署至您的电脑,并完成初步的准备工作。
- 随后会弹出我们之前添加的初始提示信息。
- 关闭消息后,在浏览器中访问rpachallenge.com。
- 机器人将会识别每一个输入字段,并填充相关Excel数据。
- 该系统将会逐一处理网站上的十个输入表格,并填充其中的数据。
每当遇到任何问题时,请确保Automation Anywhere能够及时生成错误提示,并纠正这些问题之后重新启动程序。为了确保成功解决问题,在2分钟内必须完成挑战。
就是这样!我们已经完成了RPA挑战。
总结:
在本章中, 我们应用UiPath和Automation Anywhere成功克服了RPA挑战. 我们系统性地识别并确定了10种不同形式的动态输入字段, 并最终完成挑战. 此外, 我们还初步掌握了Automation Anywhere A2019的功能特点. RPA挑战确实是一个略微棘手的第一个项目, 但掌握A2019将为我们后续工作打下坚实的基础. 在接下来的一章中, 我们将继续深入介绍Automation Anywhere在销售订单处理方面的应用.
