UiPath经验总结

转载:UiPath经验总结

原文链接
https://www.cnblogs.com/ybyebo/archive/2018/09/20/9680149.html
https://www.cnblogs.com/ybyebo/p/10086473.html
https://blog.csdn.net/weixin_39793432/article/details/86490306

  1. 日志策略:将UiPath Robot的Logging Level设为Verbose,避免重新发明轮子。

  2. 变量&参数命名要有规范,确保一眼就能看明白是什么类型什么用途。

  3. 读取Configuration也有可能出错,需要包一层Try…Catch…。

  4. 重复出现的逻辑应该提取出来作为单独的模块。

  5. 避免在Open Browser中包含Activity,以使逻辑清晰,易于修改。

  6. 每一 个Activity的作用/目的都要通过命名简要描述。

  7. 避免使用Invoke Code,便于定位&调试问题。

  8. 从Excel读取出来的DataTable要转换各列的DataType。

  9. 避免使用Excel Application Scope,用Workbook Activities替代。

  10. 避免使用非官方的Activities。

  11. 常用的配置值要存为一个变量,以便于调用

  12. PDF文档要打开后再打印,确保格式干净,稳定

  13. 避免使用IF Activity,避免嵌套使用IF Activity,尽量使用Flow Decision替代

  14. 用Element Exists超时不会报错,用On Element Appear和Find Element超时会报错

  15. Web应用,WaitForReady必须设为Complete

  16. 优先使用SimulateClick,其次是SendWindowMessages,最后才是Native,以提高性能,并且可以在后台运行

  17. 操作前要确认处于预期的界面,确认目标Element已存在。操作后要确认操作结果正确,尤其是要确认Type Into输入了预期的值。

  18. SimulateClick和SendWindowMessages操作过快,需要不断确认操作是否得到预期的结果

  19. 选择打印机之后要确认是否正确连接打印机。如何确认?在打印界面点击Properties,确认弹出的窗口为预期的打印机属性窗口即可。

  20. 对于有规律的网页数据,尽量先尝试Data Scraping (Extract Structured Data)。对自动产生的Selector采取逐层替换的方法改成正确的Selector。

  21. 如何协调多个Project之间文件的分布,如何避免多人同时开发时的冲突?

  22. 禁止使用Sequence,尽量使用Flow Chart

  23. UI操作容易受到各种意外的干扰,因此应该缩短UI操作阶段的总体时间。而为了缩短UI操作阶段的总体时间,应该将UI操作尽量放在一起,将后台的各种操作尽量放在UI操作的前后。例如,现在有一个Assign和两个Click需要执行,那么比较推荐的设计是Assign->Click->Click或者Click->Click->Assign,而不是Click->Assign->Click。集中的UI操作也会给人一种“机器人非常高效”的观感,留下较良好的印象。

  24. 为了确保“增加一倍的投入就必须相应提高一倍的效率”,流程的总体设计要尽量将问题转化为事务式(Transactional)处理的模式。这是什么意思呢?假设现在有一份Excel表格记录了宾客列表,机器人要读取这份列表,为每位宾客生成一份Word请柬,然后以邮件形式发送出去。有一种流程设计思路是这样的,机器人读取宾客列表ABC后,为A生成请柬->为B生成请柬->为C生成请柬->向A发送邮件->向B发送邮件->向C发送邮件。这种流程设计模式虽然逻辑上没有错,但是多机器人共同协作时分割工作负载相对比较困难,很难确保“增加N倍数量的机器人可以以相应提高N倍的处理能力”。因此,应该尽可能的将流程设计为,机器人读取宾客列表ABC后,为A生成请柬->向A发送邮件->为B生成请柬->向B发送邮件->为C生成请柬->向C发送邮件。可以看到在这个例子中,一个事务包含“生成一个请柬”和“相应地发送一封邮件”两个操作。只有事务中的操作全部成功,才可以判定事务成功。否则事务中的任何一个操作失败,即认定事务失败。事务失败可以中止运行,也可以跳过失败的事务,继续运行下一个事务。当增加机器人数量时,只需通过简单地分配事务,即可达到充分利用机器人效能的目的。

  25. 凡是需要人工输入的环节,就一定会出错,因此绝对不能信任人工输入的数据。那么对于人工输入的问题,有几种办法可以提高稳定性。
    a. 对人工输入进行严格约束和校验,拒绝不符合要求的数据。(不推荐,但有时候不得不这么干)
    b. 设计时加入一定的弹性以实现容错的能力。
    c. 减少人工输入的环节,减少人工输入的数据量。
    d. 设法尽可能地为人工输入进行辅助,比如弹出相关提示,给出格式示例等等。

  26. 当需要处理文件关系时,有几种办法可以在文件之间体现关联:
    a. 用某种命名规则来确保文件关联。比如说,有一个Excel文件为叫小明_总成绩.xlsx,而另一个Excel文件为小明_语文成绩.xlsx,这里文件的命名规则是“学生姓名_科目成绩.xlsx”,那么可以认为小明_总成绩.xlsx和小明_语言成绩.xlsx是相关的文件。
    b. 建立一个表格用于存储文件关系。这样文件可以通过这张表来查找,不需要特别指定命名规则。比如
    在这里插入图片描述

  27. UiPath Studio项目目录里的文件在每次发布到UiPath Robot时都会相应地新建,因此需要持久化存储的数据(比如配置文件)不应该存储在UiPath Studio项目目录里。建议用Get Environment Folder(UiPath.Core.Activities.GetEnvironmentFolder)存储在某个系统自带的文件夹下(推荐保存到MyDocuments)。

  28. 机器人往往需要能够自动登录各种系统,而各种系统往往需要凭据(用户名+密码)才能登录。可以将登录凭据保存在Windows自带的凭据管理器,然后用Get Secure Credential(UiPath.Credentials.Activities.GetSecureCredential)去读取。需要输入密码时不要用Type Into,必须用Type Secure Text。采用Get Secure Credential + Type Secure Text的组合,机器人可以做到全程不接触密码明文,相对安全。

  29. 使用Get Text或者Get Attribute从网页上获取的原始内容应该用Log Message保存到日志里以便于查错。

  30. 在Excel中填入URL会被自动转化为超链接,但是如果UiPath需要读取这个URL,那么需要移除这个超链接,否则会报错。

  31. 注意生产环境与开发、测试环境的差异,容易导致意想不到的异常。也因此,大体上,开发流程所需的时间≈调整稳定性所需的时间≈迁移到新环境测试调整所需的时间。任何环境因素的变化都需要重新测试以确保稳定性。

  32. 加入源代码管理的时候,UiPath Studio里项目目录.screenshots下的内容也必须全部加入源码管理。

  33. 每次运行都需要保存一个配置文件的副本,以备查错。

  34. 如果需要建立自定义日志,流程运行的最初步骤将已存在的"C:\Users\你的用户名\AppData\Local\UiPath\Logs\日期_Execution.log"文件改掉名字,然后在运行中用Log Message记日志。UiPath会自动创建新的日志文件,然后在运行的最后将这个日志文件复制出来即可。通过这种方式可以简化自定义日志的工作,而且必要时可以改变日志级别以获取更多信息用于查错。

  35. 流程较长时,可以分割为多个阶段来开发,每个阶段流程用一个.xaml文件来处理。分割的原则大体上是,给定机器人一个文件A,机器人经过阶段性的UI或者后台处理,一定可以产生文件B。那么只需要将A的完整路径作为这个.xaml文件的输入参数,而将B的完整路径作为输出参数,即可很方便地开发调试这个流程。当有多人一起协作开发同一个流程时,只要这样分割为多个小流程,并且详细约定好中间文件的各项内容,就可以同时进行。这种方式也称为“面向接口编程”。

  36. 当RPA项目团队有多人开发时,每人负责一个流程的组织模式有可能造成每个流程都赶不完的局面。不如将单个流程划分成更小的流程,一起协同进行一个流程的开发,这样团队在预期的时间内可以完成尽可能多的流程,而不是制造大量完成度参差不齐的流程。特别是,团队成员可以不需要了解流程的全貌,只了解流程的局部即可,实现流水线式的开发管理。而对流程掌握最全面的成员,可以少承担一些开发工作,但需要负责不断地进行集成测试,由这个人来负责交付完整的UiPath Project。

  37. 编辑Selector时,要善用相对Selector和部分Selector,例如Anchor Base,Element Scope,Find Relative Element, Get Ancestor。

  38. 开发的最初不应该加入任何Try Catch,以便在测试中发现会产生Exception的位置,以及Exception的类型,并进行相应地处理。即使逻辑实现确实需要加入Try Catch,也切忌直接Catch System.Exception,防止预期外Exception类型无法在Catch中正确处理。但最后一定要在最外层套一个Try Catch,以处理预期外的Exception。

  39. Get Text获取的数据是UiPath.Core.GenericValue类型,需要输出为特定格式字符串的时候,可以尝试使用Format Value(UiPath.Core.Activities.FormatValue)。

  40. 目前大多数RPA的使用场景只是数据处理领域ETL工作的变种,因此可以尽量参考ETL的设计思想和有益经验。

  41. 每个Activity都必须命名,必要时还须加上Annotation进行解释说明。参数和变量也是如此。

  42. 部分下拉菜单和所有的输入可以通过 Set Text活动

  43. 每次输入都需要校验输入是否成功(可封装公共类)

  44. 每次点击确认前需要适当加入延迟,避免输入框内容未能被web识别

  45. 若鼠标移动后弹窗会消失无法获取元素时,可F12临时删除该弹框html属性的display使其一直显示

  46. 由于每台PC的chrome浏览器exe路径不同,所以chrome.exe路径最好放入Config配置文件中

骚操作:
跳过Robot,Orchestrator直接调度Studio编辑出来的 xxx.xmal文件.

具体操作:

1.命令行内,用cd跳转到机器人Robot所在路径,
2.执行: .\UiRobot.exe -f “C:\Users\xxxx\BlankProcess1\Main.xaml” (自己文件的路径)
此操作可以再断网,机器人进程关闭情况下进行.

扩展1.还可以传入参数,\UiRobot.exe -f “C:\Users\xxx\Main.xaml” -input “{‘Aug’ : ‘we can do it’}”

扩展2.可以将上面命令写成bat脚本,让其他程序来调度,此为最骚的地方.

常用的Web标签:

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值