IS-PRA 小项目实战全解析

前言

学习 RPA 以来,最想看到的是实战项目流程解析,蹲守论坛一年,一直没有看到详细的全过程。 这次我尝试根据经手的小项目总结出的流程,分享给大家。

1 需求分析

某公司收取学员费用后,在学员现有账号的前提下,分别登录账号,并给每位学员激活两套收费课程;

  • 有 1000+ 个学员的账号,都需要登录账号;

  • 每个学员都要激活两套相同的课程;

  • 每位账号登录的 IP 都要求不相同;

这工作本可以分发给所有学员,由学员自己完成。

但公司为了替学员省事、减少与学员的沟通,这活就自己做了;

由于每位学员操作的步骤极度相似,适合流程自动化,可以尝试梳理流程;

2 流程梳理

根据操作的步骤将流程梳理成几块:数据表重构、登录网站、订购课程、验证课程、切换 IP

2.1 源数据表

以下是源数据表内容,

IS-PRA 小项目实战全解析

  • 账号通过身份证号和密码登录;

  • 课程需要激活码来激活;

  • 最后验证课程是否成功购买;

使用机器人操作后,给数据表补充几个选项:登录标识、支付标识、校验标识和 IP 地址;

IS-PRA 小项目实战全解析

以上是正常操作后的数据状态,但流程跑起来可能会因为各种状态不稳定而出错,因此加入一些容错机制和错误提示:

  • 登录:用户名或密码错,验证码多次识别出错等;

  • 支付:激活页面中的异常或激活未成功等;

  • 校验:页面打不开、或购买课程数量不相符导致的校验失败等;

2.2 登录网站

这是一个普通的登录界面,如下图:

IS-PRA 小项目实战全解析

用户名和密码从 excel 表格中读出来,再设置文本就行,其中验证码需要使用“验证码”组件识别;

登录成功后,抓取后台页面中的文本来验证一下,如下图;

IS-PRA 小项目实战全解析

如果登录成功,可以抓取“继续教育”来验证登录的操作是否成功;

2.3 订购课程

登录成功后,要为学员订购(激活)课程,如下图:

IS-PRA 小项目实战全解析

点击订购课程后,跳转到订购激活页面,通过激活码来激活课程,如下图:

IS-PRA 小项目实战全解析

课程激活成功后,会弹出一个小窗口,抓取“激活成功”字样来验证激活是否成功。

一共两套课程,操作方法是一样的。

2.4 验证课程

一个新的学员账号在成功激活两套课程后,在“我的课程”页,会显示一个课程“列表”,如下图:

IS-PRA 小项目实战全解析

在这里不必在乎课程的内容,只需要抓取分页中的 “6” 即可验证课程已经激活。

如果没有激活或只激活了一套课程,那么分页数字就不会是 6 页了,会写入错误信息。

2.5 切换 IP

模拟用户在不同地点登录,就要求切换 IP,可以使用代理切换 IP 的小工具来完成,如下图;

IS-PRA 小项目实战全解析

一个账户的操作全部完成后,可以点一下切换 IP 的按钮,也可以放在全部操作开始之前点。

3 流程设计

业务逻辑熟悉后,流程梳理完成,进入流程设计环节;

流程梳理过程中,可以不必完全像人工操作那么繁琐,比如:要激活课程的链接是固定的,就不需要像人工那样通过搜索找到课程,可以在新的 TAB 页里输入课程地址即可;

3.1 流程设计思路

梳理关键的子流程

  • 登录子流程;

  • 课程激活子流程;

  • 课程校验子流程;

  • 切换 IP 子流程;

根据关键流程梳理辅助子流程:读取信息、写入信息、校验信息等辅助子流程;

  • 读取用户名和密码子流程;

  • 读取课程激活码和激活密码子流程;

  • 写入登录状态子流程;

  • 写入激活状态子流程;

  • 写入校验状态子流程;

  • 切换 IP 地址子流程;

  • 写入 IP 地址子流程;

根据容错需要梳理容错子流程

  • 订单页面子流程:用于确认订购的课程页面已打开;

  • 激活页面子流程:用于确认激活课程的页面已打开;

看一下全部流程,如下图:

IS-PRA 小项目实战全解析

看一下main流程,如下图:

IS-PRA 小项目实战全解析

3.2 登录子流程

登录子流程主要分为三块内容:读取用户信息填入用户名和密码识别验证码

先预览一下登录子流程的流程组件图:

IS-PRA 小项目实战全解析

这里面验证码的识别稍微复杂一点,下面会详细讲到。

 3.2.1 读取用户信息

为了不让子流程组件太多,就把读取信息用一个子流程来实现。

并把用户名和密码给变量;

IS-PRA 小项目实战全解析

为了不影响整体阅读,这里要新开一篇,请看 IS-PRA 小项目实战全解析 – 读写子流程

 3.2.2 填入用户名和密码

这个比较简单些,不用多讲。

IS-PRA 小项目实战全解析

这里打开的是IE,还用了热键和模拟按键,把窗口最大化,有时 IE 窗口关闭后再打开,不是最大化的窗口,这有些莫名其妙,所以干脆每次都最大化一下,如下图:

IS-PRA 小项目实战全解析

alt+space 后,最大化 (X)。

用户名和密码从数据表来,默认是不会出错的,但保不齐在录入时会出错,导致登录时进不了后台。

按理说是需要容错的,但在这里出错率可能性太低,为了偷懒,省去了;

 3.2.3 识别验证码

验证码识别有几点要注意:

  • 验证码识别不是每次都准的,也不能因为万一“用户名或密码错误”导致验证码识别一直进行下去。所以,先来个容错,比如:超过 5 次就不要再识别了。

  • 这里的验证码字母是小写优先的,意思是验证码显示大写的话,输入小写或大写字母也能过;但验证码显示是小写的话,输入大写的就不过了。

  • 这里的验证码总是 4 位的,多了少了都不对;

因此,设计思路:

  • 先套个 try 异常;

  • 再来个 while 循环,超过 5 次尝试后,return 0,并强关窗口,跳出循环;

  • 验证码不是 4 位时容错,

  • 验证码正确后,点击登录,验证登录,成功后再 return 1;

根据思路设计验证码流程,请看 IS-PRA 小项目实战全解析 – 读写子流程

3.3 课程激活流程

根据流程梳理,课程激活可以简单理解为:获取激活码信息,打开课程页面并购买、进入订购页面激活课程、验证激活;

看一下子流程图:

IS-PRA 小项目实战全解析

看起来很多,其实是两套课程,操作几乎是重复的。

 3.3.1 获取激活码信息

通过一个子流程,获取激活码和激活密码,分别存在 4 个变量中;

IS-PRA 小项目实战全解析

获取激活码子流程,请看 IS-PRA 小项目实战全解析 – 读写子流程

 3.3.2 打开课程页面

需要订购的两套课程分别是两个固定的页面,地址形如:'https://xxx.xxx.xxx/singleCourseMenu.htm?cmId=TUNARDFK' ;

只需要在 URL 栏输入并回车即可,打开页面后,点击订购;

当课程页面打不开或等待时间过长,则认为订购失败,返回 “-1”,这种情况比较特殊,但凡是返回 -1 都会被认定为失败,主要原因是切换 IP 后的网络状态会相对不稳定,因此容错是有必要的,所以加了个容错的子流程 ver_order,页面打不开,则写入失败 ,关于子流程 set_act,详情请见 IS-PRA 小项目实战全解析 – 读写子流程

IS-PRA 小项目实战全解析

  • 设置文本:在 URL 输入课程地址;

  • 模拟按键:按回车;

  • 子流程 ver_order 是用来验证当前页面是否打开;

  • 如果正确打开,则点击购买;

  • 如果不能正确打开,则写入“失败”

 3.3.3 激活课程

上面点击购买后,进入订购的支付页面,再走一个 ver_act 确认页面打开的子流程来容错。

IS-PRA 小项目实战全解析

正确打开后,进入支付步骤,出错的话,就写入“失败”。

这里要注意的是:激活码和激活密码不能直接使用设置文本的方式填入,于是改用“拷贝到剪贴板”再“ctrl+v”的方式粘贴到文本框中。

正确输入后,再点击激活按钮。

 3.3.4 验证激活

点击激活按钮后,正常情况下会弹出“激活成功”的窗口,此时只要能抓取到激活成功字样即可;

但实际情况可能是点了按钮也未必能真实激活,因此,专门设置了一个等待时间用来容错,如下图;

IS-PRA 小项目实战全解析

到此,激活第一套课程的流程就走完了。接下来,按照上面的流程再走一遍,订购第二套课程即可。

3.4 课程校验子流程

如果课程订购成功,在“我的课程”页面中可以看到课程列表,并有课程分页条;此时我们只要能抓取到分页中的数字即可:

这里有个特殊情况,即当用户资料不完整时,并不会跳入课程页面,而是会跳入“信息补录”的页面,所以在校验前还需要加入这个容错。

IS-PRA 小项目实战全解析

如果能抓取到,则返回1,抓取不到则返回0

3.5 切换 IP 子流程

切换 IP 是通过小工具实现的,只需要点击切换按钮即可;

切换成功后,需要抓到当前的 IP,只需要打开一个查询 IP 的网站获取文本即可;

将获取到的 IP,写入数据表;

cut_IP子流程的流程图,如下:

IS-PRA 小项目实战全解析

main流程中,cut_IP 切换 IP 子流程和 set_IP 写入 IP 子流程是放在最开始位置的。

IS-PRA 小项目实战全解析

4 流程交付

本项目,总 12 个流程,其中 1 个主流程,11 个子流程;

主流程中大致分为 7 块内容;

  • 1,获得数据表总行数,确定循环次数;
  • 2,进入循环,设置自增变量 P_num;
  • 3,尝试切换 IP 地址,并把 IP 写入数据表;
  • 4,尝试登录,弹出消息并写入登录状态;
  • 5,课程激活,弹出消息并写入激活状态;
  • 6,课程校验,弹出消息并写入检验状态;
  • 7,结束循环,弹出消息;

请见示意图 :

IS-PRA 小项目实战全解析

项目效果:

  • 原工作需要手工完成,每小时完成 20 组数据,使用机器人后,每小时完成后 30-40 组,提升效率 50-100%;
  • 原工作枯燥无趣,没啥技术含量,使用机器人后,笔记本在旁自动干活,时间腾出来摸鱼,哈哈;

本贴是这次小项目实战解析的原贴;

辅助子流程的说明,请看 IS-PRA 小项目实战全解析 – 读写子流程