IS-PRA 小项目实战全解析
前言
学习 RPA 以来,最想看到的是实战项目流程解析,蹲守论坛一年,一直没有看到详细的全过程。 这次我尝试根据经手的小项目总结出的流程,分享给大家。
1 需求分析
某公司收取学员费用后,在学员现有账号的前提下,分别登录账号,并给每位学员激活两套收费课程;
-
有 1000+ 个学员的账号,都需要登录账号;
-
每个学员都要激活两套相同的课程;
-
每位账号登录的 IP 都要求不相同;
这工作本可以分发给所有学员,由学员自己完成。
但公司为了替学员省事、减少与学员的沟通,这活就自己做了;
由于每位学员操作的步骤极度相似,适合流程自动化,可以尝试梳理流程;
2 流程梳理
根据操作的步骤将流程梳理成几块:数据表重构、登录网站、订购课程、验证课程、切换 IP
2.1 源数据表
以下是源数据表内容,
-
账号通过身份证号和密码登录;
-
课程需要激活码来激活;
-
最后验证课程是否成功购买;
使用机器人操作后,给数据表补充几个选项:登录标识、支付标识、校验标识和 IP 地址;
以上是正常操作后的数据状态,但流程跑起来可能会因为各种状态不稳定而出错,因此加入一些容错机制和错误提示:
-
登录:用户名或密码错,验证码多次识别出错等;
-
支付:激活页面中的异常或激活未成功等;
-
校验:页面打不开、或购买课程数量不相符导致的校验失败等;
2.2 登录网站
这是一个普通的登录界面,如下图:
用户名和密码从 excel 表格中读出来,再设置文本就行,其中验证码需要使用“验证码”组件识别;
登录成功后,抓取后台页面中的文本来验证一下,如下图;
如果登录成功,可以抓取“继续教育”来验证登录的操作是否成功;
2.3 订购课程
登录成功后,要为学员订购(激活)课程,如下图:
点击订购课程后,跳转到订购激活页面,通过激活码来激活课程,如下图:
课程激活成功后,会弹出一个小窗口,抓取“激活成功”字样来验证激活是否成功。
一共两套课程,操作方法是一样的。
2.4 验证课程
一个新的学员账号在成功激活两套课程后,在“我的课程”页,会显示一个课程“列表”,如下图:
在这里不必在乎课程的内容,只需要抓取分页中的 “6” 即可验证课程已经激活。
如果没有激活或只激活了一套课程,那么分页数字就不会是 6 页了,会写入错误信息。
2.5 切换 IP
模拟用户在不同地点登录,就要求切换 IP,可以使用代理切换 IP 的小工具来完成,如下图;
一个账户的操作全部完成后,可以点一下切换 IP 的按钮,也可以放在全部操作开始之前点。
3 流程设计
业务逻辑熟悉后,流程梳理完成,进入流程设计环节;
流程梳理过程中,可以不必完全像人工操作那么繁琐,比如:要激活课程的链接是固定的,就不需要像人工那样通过搜索找到课程,可以在新的 TAB 页里输入课程地址即可;
3.1 流程设计思路
梳理关键的子流程;
-
登录子流程;
-
课程激活子流程;
-
课程校验子流程;
-
切换 IP 子流程;
根据关键流程梳理辅助子流程:读取信息、写入信息、校验信息等辅助子流程;
-
读取用户名和密码子流程;
-
读取课程激活码和激活密码子流程;
-
写入登录状态子流程;
-
写入激活状态子流程;
-
写入校验状态子流程;
-
切换 IP 地址子流程;
-
写入 IP 地址子流程;
根据容错需要梳理容错子流程;
-
订单页面子流程:用于确认订购的课程页面已打开;
-
激活页面子流程:用于确认激活课程的页面已打开;
看一下全部流程,如下图:
看一下main
流程,如下图:
3.2 登录子流程
登录子流程主要分为三块内容:读取用户信息,填入用户名和密码,识别验证码;
先预览一下登录子流程的流程组件图:
这里面验证码的识别稍微复杂一点,下面会详细讲到。
3.2.1 读取用户信息
为了不让子流程组件太多,就把读取信息用一个子流程来实现。
并把用户名和密码给变量;
为了不影响整体阅读,这里要新开一篇,请看 IS-PRA 小项目实战全解析 – 读写子流程 ;
3.2.2 填入用户名和密码
这个比较简单些,不用多讲。
这里打开的是IE,还用了热键和模拟按键,把窗口最大化,有时 IE 窗口关闭后再打开,不是最大化的窗口,这有些莫名其妙,所以干脆每次都最大化一下,如下图:
alt+space 后,最大化 (X)。
用户名和密码从数据表来,默认是不会出错的,但保不齐在录入时会出错,导致登录时进不了后台。
按理说是需要容错的,但在这里出错率可能性太低,为了偷懒,省去了;
3.2.3 识别验证码
验证码识别有几点要注意:
-
验证码识别不是每次都准的,也不能因为万一“用户名或密码错误”导致验证码识别一直进行下去。所以,先来个容错,比如:超过 5 次就不要再识别了。
-
这里的验证码字母是小写优先的,意思是验证码显示大写的话,输入小写或大写字母也能过;但验证码显示是小写的话,输入大写的就不过了。
-
这里的验证码总是 4 位的,多了少了都不对;
因此,设计思路:
-
先套个 try 异常;
-
再来个 while 循环,超过 5 次尝试后,return 0,并强关窗口,跳出循环;
-
验证码不是 4 位时容错,
-
验证码正确后,点击登录,验证登录,成功后再 return 1;
根据思路设计验证码流程,请看 IS-PRA 小项目实战全解析 – 读写子流程 ;
3.3 课程激活流程
根据流程梳理,课程激活可以简单理解为:获取激活码信息,打开课程页面并购买、进入订购页面激活课程、验证激活;
看一下子流程图:
看起来很多,其实是两套课程,操作几乎是重复的。
3.3.1 获取激活码信息
通过一个子流程,获取激活码和激活密码,分别存在 4 个变量中;
获取激活码子流程,请看 IS-PRA 小项目实战全解析 – 读写子流程 ;
3.3.2 打开课程页面
需要订购的两套课程分别是两个固定的页面,地址形如:'https://xxx.xxx.xxx/singleCourseMenu.htm?cmId=TUNARDFK'
;
只需要在 URL 栏输入并回车即可,打开页面后,点击订购;
当课程页面打不开或等待时间过长,则认为订购失败,返回 “-1”,这种情况比较特殊,但凡是返回 -1 都会被认定为失败,主要原因是切换 IP 后的网络状态会相对不稳定,因此容错是有必要的,所以加了个容错的子流程 ver_order
,页面打不开,则写入失败
,关于子流程 set_act
,详情请见 IS-PRA 小项目实战全解析 – 读写子流程 。
-
设置文本:在 URL 输入课程地址;
-
模拟按键:按回车;
-
子流程
ver_order
是用来验证当前页面是否打开; -
如果正确打开,则点击购买;
-
如果不能正确打开,则写入“失败”
3.3.3 激活课程
上面点击购买后,进入订购的支付页面,再走一个 ver_act
确认页面打开的子流程来容错。
正确打开后,进入支付步骤,出错的话,就写入“失败”。
这里要注意的是:激活码和激活密码不能直接使用设置文本的方式填入,于是改用“拷贝到剪贴板”再“ctrl+v”的方式粘贴到文本框中。
正确输入后,再点击激活按钮。
3.3.4 验证激活
点击激活按钮后,正常情况下会弹出“激活成功”的窗口,此时只要能抓取到激活成功字样即可;
但实际情况可能是点了按钮也未必能真实激活,因此,专门设置了一个等待时间用来容错,如下图;
到此,激活第一套课程的流程就走完了。接下来,按照上面的流程再走一遍,订购第二套课程即可。
3.4 课程校验子流程
如果课程订购成功,在“我的课程”页面中可以看到课程列表,并有课程分页条;此时我们只要能抓取到分页中的数字即可:
这里有个特殊情况,即当用户资料不完整时,并不会跳入课程页面,而是会跳入“信息补录”的页面,所以在校验前还需要加入这个容错。
如果能抓取到,则返回1
,抓取不到则返回0
;
3.5 切换 IP 子流程
切换 IP 是通过小工具实现的,只需要点击切换按钮即可;
切换成功后,需要抓到当前的 IP,只需要打开一个查询 IP 的网站获取文本即可;
将获取到的 IP,写入数据表;
cut_IP
子流程的流程图,如下:
在main
流程中,cut_IP
切换 IP 子流程和 set_IP
写入 IP 子流程是放在最开始位置的。
4 流程交付
本项目,总 12 个流程,其中 1 个主流程,11 个子流程;
主流程中大致分为 7 块内容;
- 1,获得数据表总行数,确定循环次数;
- 2,进入循环,设置自增变量 P_num;
- 3,尝试切换 IP 地址,并把 IP 写入数据表;
- 4,尝试登录,弹出消息并写入登录状态;
- 5,课程激活,弹出消息并写入激活状态;
- 6,课程校验,弹出消息并写入检验状态;
- 7,结束循环,弹出消息;
请见示意图 :
项目效果:
- 原工作需要手工完成,每小时完成 20 组数据,使用机器人后,每小时完成后 30-40 组,提升效率 50-100%;
- 原工作枯燥无趣,没啥技术含量,使用机器人后,笔记本在旁自动干活,时间腾出来摸鱼,哈哈;
本贴是这次小项目实战解析的原贴;
辅助子流程的说明,请看 IS-PRA 小项目实战全解析 – 读写子流程
赞 👍
资源能否分享一下,萌新想尝试一下是否能写出来
我改了一下。
标题写错了?
很赞 😄