我是阿杰,一个只想升到项目经理的RPA工程师ㄟ( ▔, ▔ )ㄏ
今天主要来讲RPA开发中的硬等待和软等待,端好小板凳,我们出发~
一、背景
在日常RPA开发过程中,我们会遇到下面这个问题:
我设计了一个抓取页面数据的流程,它需要在点击日期之后,获取从”浏览量“到”跳出率“这部分的所有数据。不难发现的是,当我的机器人点击完日期之后,页面出现了加载的圆圈,这个圆圈相当于网页在告诉我们:”我正在加载你指定日期的数据,请稍等。“
我们知道RPA机器人执行指令是非常快的,它并不能像人那样灵活地等网页加载完再获取数据。如果不加干预,机器人很可能就会获取错误的数据,影响了日常工作。
那么我们该如何增加干预呢?这里就需要介绍一个”增加等待“的概念,也是本文的主题。本文将会以两类等待(硬等待和软等待)展开,给大家分享两者之前的区别以及优缺点,并最终给出一个简单的demo加深理解。
二、概念
2.1 什么是硬等待?
所谓硬等待,指的是让机器人等待固定的时间,然后再继续执行下一个命令。
图2-1展示了一个硬性等待的场景。我在流程中增加了一个【等待】指令,并把这个时间设置成了3秒,然后在这个指令下面我使用一个【打印日志】指令(它的作用是在下方的运行日志输出一段你指定的文字)。
可以看到的是,流程运行之后,机器人等待了3s,便运行了第二行的指令,这是硬等待的使用效果。
使用硬等待的好处在于,它能按照你指定时长进行等待,可以防止流程指令执行过快而出现指令失效的情况,并且有时候可以在一定程度上防止触发网页或软件的反爬机制(比如突然要你验证码、要你稍后重试等)。
不过,由于是固定时间,当RPA机器人在执行应用的过程中若出现网络不佳的情况,页面上数据加载的时间超出了你预设好的时间,那么机器人获取到的数据可能是不准的。
2.2 什么是软等待
那能否让机器灵活一点,让它等待到某个关键信息出现或消失的时再往下执行呢?这时,软等待就承担起了这一重任。
所谓软等待,指不完全依赖开发者的指定时长,机器人会等着网页或软件当中某个关键元素的出现或消失之后才会执行下一条指令。
还记得在图1时我们点击日期之后页面发生了什么变化吗?当我选择了"2023-05-04"这一天的数据时,数据处出现了一个圈圈样的东西,这个就是让用户坐在电脑前稍微等一会儿,然后再看呈现出来的数据。
但是这个等待的时间,你能确定吗?系统并没有告诉你具体要等多久,你也只能根据现实情况猜个大概,这个时候软等待就派上用场了——虽然我不知道我要等多久,但我知道的是,只要加载的圈圈消失了,就说明数据已经加载好了,那我再继续获取数据就好了。
如图2-2,我希望获取从"2023-05-04"到"2023-05-07"的应收金额、支付单数、支付人数和客单价数据,并保证数据的准确性。在这个页面中选择日期后,会出现图2-3所示的加载元素。为保证数据的准确性,我会在这里加上软等待的机制,来保证最终的数据是准确的。我的具体指令流程会是这样:
先在网页中输入好起始结束日期,再加入软等待:等待数据加载元素(就是那个小圆圈)消失,再获取刚才提到的数据然后输出出来。我们来看下它的运行效果:
输入完日期后,网页如期出现了加载圆圈这个网页元素,在这个网页元素消失之后,机器人立马完成了数据的获取。整个过程我并没有使用任何的硬等待(那里的最多等待20秒是可以取消的),机器人反而能更加灵活地根据页面情况进行等待。这就是软等待的魅力。
所以,软等待的优势就是它可以无限等待或者不等待固定的时间,从而增加流程的灵活性。但他的缺点在于,如果不加以限制等待时间,同时等待的元素结构发生变化时,机器人就会卡死在该指令而不往下执行,这可能会影响到其他应用的执行。
总结
RPA开发中存在硬等待和软等待两个机制。
硬等待比较死板,让机器人停多久就停多久,不会灵活变通。
软等待相对灵活,在给定时间的情况下只要有目标出现就不会干等。不给定时间就会一直等下去(既是优点也是缺点)。
硬等待和软等待有各自的特点,他们可以相互配合使用,从而使应用运行更加流畅、灵活,减少运维工作。
以上就是全部分享内容啦,如果喜欢的话还请点赞、关注。如有不专业的地方,还请多多包涵~