在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工具是必备的技能,最好对其他的自动化工具或技术手段也要熟悉,还需要有能一定的解决问题的能力。
像这样对技术的宽度和深度的要求,对非开发背景的人员来说,犹如一道鸿沟,很难跨越。
闻道有先后,术业有专攻,专业的人做专业的事才是正道!
本文转载自微信公众号:RPA那些事儿,本文观点不代表51RPA立场。