NO.017-怎样的设计可以让你的应用更稳定——By.杭州组
评论
收藏

NO.017-怎样的设计可以让你的应用更稳定——By.杭州组

经验分享
云潮
2023-06-21 20:34·浏览量:2960
云潮
发布于 2023-06-21 20:16更新于 2023-06-21 20:342960浏览

作者:云潮

关键词:稳定性

-------------------------------------------------------------------------------------------------------------------------------------------------

一.问题背景

    当我们在运行网页应用的时候,明明我们写的RPA程序语法正确,程序也是按照正确的业务过程在运行,但是运行过程仍然出错了。出现这类问题主要是网络缓慢导致元素没加载完全、界面有变更,或者是页面弹窗遮挡元素等原因造成的。程序出错以后如果需要重新运行应用,过去执行过的都会重新运行,这将浪费大量的时间和精力。那么我们在设计应用的时候,应该如何避免这些情况呢,怎么样设计可以让我们的程序更加稳定呢?

二.针对元素问题的一些解决方法

    针对元素的问题,社区里是有一些小伙伴分享的解决方案的,我这里直接贴出对应的链接

        1.网站频繁更新

            对于网站频繁更新的问题,有可能定位的元素根本就没有变化,只是在该元素的上层多了个标签,如果是这样那么通过影刀捕获的元素很可能在运行的时候会找不到元素,对于这一类问题我们可以通过xpath来定位元素,通过相对定位的语法排除上层标签的影响。

                1.1在影刀中如何使用Xpath:网页中通过 XPath 定位元素

                1.2Xpath的基础语法:xpath&影刀日常场景元素捕获 ——by.广州业务组

        2.随机的广告弹窗

                2.1通过插件解决:完美解决网页乱弹广告问题----By华南组

                2.2相对通用得生意参谋动态弹窗广告关闭得解决方案

                2.3分析网页的规律,找到广告框所在的div等标签,通过设置该标签的style属性值为display:none来过滤

三.事务性数据的设计让应用更抗揍

    1. 处理进度的持久化

             刚接触RPA的初级工程师经常会有的一个疑问就是「如何把Excel中已经处理过的数据跳过」,这个问题可以扩展理解为RPA程序处理结果的持久化。

            如果在RPA的处理过程中,所有要处理的业务数据彼此之间是独立的,每个业务数据的处理步骤都是一样的,那么我们可以认为当前的业务具备事务性特点。

            有这样一个案例,客服人员需要去爱库存网站拿到退货订单的AD单号,然后去聚水潭根据AD单号查询物流状态,如果仓库确认收货就把快递公司名称以及快递单号写入爱库存,以上案例就可以抽象化的理解为一个事务,步骤都可以概括为:
                1.爱库存拿到退货订单的AD单号
                2.聚水潭根据AD单号查询物流状态
                3.确认收货的物流信息写入爱库存

            这些事务性的数据,我们通常会将其存储在数据库或Excel中,每一个事务型数据对应Excel工作簿中某个工作表的一行。
            如果有大量的数据需要被处理,而程序的运行过程因为某些原因被中断了,如果没有持久化设计,就需要从头处理数据,浪费时间,且可能有些数据不允许被重复处理。
           对于这种情况,通常就需要进行处理进度持久化设计,我们可以在数据表或工作表增加一列专门用于表示当前行数据是否已经处理完成了,在遍历过程中,如果判断当前行已经处理完成,则跳过当前行,处理下一行,否则就开始对当前行数据的处理。

    2.事务项之间避免干扰

        事务性数据有个特点叫做「隔离性」:一个事务的执行不应该被其他事务干扰。
        那么我们在设计RPA程序时为了满足事务的隔离性需求,就应该对每个事务项的处理过程都进行异常捕获,将异常记录后继续执行下一个事务项,以免因为一个事务项的异常导致整个程序被中断,使其他剩余事务项没有被处理。
        当所有事务项都处理完成后,可以再重新运行一遍程序,结合上文所讲的处理进度的持久化,跳过已处理完成的事务项,对未处理完成的事务项重新处理。

四.稳定的应用框架应该是怎么的呢?

        流程错误重试

                

        数据表格怎么获取列上的第一个可用行

        

        上面的案例中我们提到的步骤是针对单条退货订单的,那么多条订单如果是按照正常的逻辑我们应该是在爱库存中循环退货订单,然后依次去查询,然后回到爱库存填写信息,这样写就会遇到如果循环订单失败就会导致查询无法继续,查询失败就会导致无法写入,各个步骤之间的关联性比较强,按照我们上面介绍的不符合事务性数据的涉及。


        那么我们应该怎样设计我们的应用呢,这里可以借助影刀的数据表格,首先我们在爱库存查询到所有的退货订单的AD单号写入数据表格,然后依次根据数据表格的AD单号去查询物流的信息,查询结果写入数据表格,再设置一列记录是否查询成功,最后根据数据表格的查询结果去爱库存依次填入,这里也设置一列记录是否操作成功。这样在某一步出错时,我们通过获取列上的第一个可用行来跳过已经查询和操作过的数据,而且上述的三个步骤不存在依赖的关系,需要的数据来源数据表格。在上述过程中如果某一步骤出错了可以让它重新运行。


        这里我用个简单的应用框架来展示上面提到的设计思路,抛砖引玉,欢迎评论区的大佬来分享优秀的应用模板

    [比心]

        应用框架:应用框架

收藏5
全部评论1
最新
发布评论
评论