乐趣区

RPA自动化工具之术业有专攻篇

在 9 月 16 号,51RPA 小编分享了《RPA 之术业有专攻篇》文章中提到,要能做到真正的到独当一面,写出优化,健壮,安全,通用和易维护的代码,RPA 的开发人员需要有一定的开发经验,专业的人做专业的事才是正道。分享一下在项目开发过程中遇到的问题,以及如何解决的过程,延伸下“术业有专攻”这个话题。

操作的是某网上银行的桌面版的客户端,里面包含了自定义的组件。需求是调整记账日期的开始日期和结束日期里的值,通过手动的操作方式是将光标移动到年份,通过上下键调整年份,再通过右方向键移动到月份,通过上下键调整月份,类似的方法再调整日期。

该案例的难点在于记账日期为自定义控件,从表面看就一个字段,实际点击进去会有三个独立的字段(年月日),另外通过 UiPath 进行控件抓取也只能抓到整个字段,无法抓到年月日。

初步分析之后,会有下列三种的实现方式:

1、通过 Type into,直接将日期赋值到记账日期中

UiPath 找到的开始日期和结束日期的选择器的属相完全是一致的,无法进行区分。导致在赋值的时候只能到结束日期上,无法赋值到开始日期,并且年月日的顺序会有错误。

2、通过 Send Hotkey 发送 Tab 键到记账日期中

通过发送 Tab 键可以跳到结束日期,但是再通过上下键调整时,光标会自动跳到数据筛选中。另外通过 Tab 进行光标跳转时,每一次跳转的路径也不相同,没有规律可寻,无法搞定。

3、通过 Click Text 的相对位置,找到记账日期

通过 Click“记账日期”的相对位置定位到开始日期中的年份中,但是再通过上下键调整时,光标会自动跳到数据筛选中,无法搞定。

另外需要说明下,在操作网银这种软件时,对代码的健壮性要求要高些,尽量避免使用 Tab 键之类的键鼠操作,因为这种系统的版本升级比较频繁,版本间可能存在大的差异性。

经过上述的三种方法的测试,基本上确定通过 UiPath 本身是无法完成这一操作,只能借助第三方的自动化工具了。

在《请理性看待 RPA》一文中提到 RPA 本身就是自动化工具的一种,在 RPA 这一个词语流行之前,市场上已经存在了多个开源或者免费的自动化工具,其中比较有代表性的有两个:

Selenium - 是一个开源的自动化工具,其主要用于 Web 应用程序的自动化测试。

AutoIt – 是一个免费的自动化工具,用于 Windows GUI (图形用户界面) 中进行自动化操作。

对于这两种自动化工具的操作,就完全属于软件开发的范畴了,需要大量的编程。

像这种对 GUI 进行操作的情况,就可以尝试使用 AutoIt。通过使用 AutoIt 对记账日期进行识别,发现可以通过 indexid 将开始日期和结束日期进行区分,也就是可以定位这两个字段。

最终解决方案为 UiPath 调用 AutoIt 来实现,如下:

  • 1、通过 C# 调用 AutoIt 的 DLL 文件,编写代码去定位开始和结束日期,并赋值。
  • 2、将代码通过 VS 发布成 nuget 包。
  • 3、在 UiPath 中引入包,并传入参数进行调用。

另外还有一种情况,有些自定义的控件(例如 Table),通过 RPA 或者自动化工具是无法抓取其内部的属性,这种只能解析 Visual Tree,通过父节点循环找到其子节点和相应的属性值,之后再进行相关的取值,这也需要一定的编程技巧和经验。

对于 RPA 开发者来说,具有一定的.net 的开发经验和熟悉 RPA 工具是必备的技能,最好对其他的自动化工具或技术手段也要熟悉,还需要有能一定的解决问题的能力。

像这样对技术的宽度和深度的要求,对非开发背景的人员来说,犹如一道鸿沟,很难跨越。

闻道有先后,术业有专攻,专业的人做专业的事才是正道!

原文链接:https://www.51rpa.net/rpaedu/…

退出移动版