影刀RPA新手教程:流程控制综合实战——用一个完整案例串起判断、循环、异常处理

影刀RPA新手教程:流程控制综合实战——用一个完整案例串起判断、循环、异常处理

影刀RPA新手教程:流程控制综合实战——用一个完整案例串起判断、循环、异常处理

前面几篇文章,我们分别学了If判断、For循环、While循环、ForEach循环、嵌套循环、TryCatch。

它们就像乐高积木,单独用也能解决问题。

但真正的威力,是把它们组合起来,搭成一个完整的流程。

这篇文章,我们就用一个完整的案例,把这些"积木"都串起来。

案例:自动登录一个网站

我们要做的事情是:

自动打开一个网站,输入用户名和密码,点击登录。

但如果出现了验证码,我们就刷新页面,重新来过。

最多试5次,如果5次都失败,就停止并报警。

生活中的类似场景

这就像你去医院挂号。

你要先刷身份证(输入用户名密码)。

如果系统正常,你就挂上号了(登录成功)。

但如果系统弹出一个验证码(你要看图识字),你第一次可能输错。

你就刷新页面,重新来。

但医院规定:最多让你试5次,5次都错,就把你身份证锁住(停止并报警)。

第一步:打开网页(TryCatch处理网络错误)

我们先把"打开网页"这个可能会出错的操作,放在TryCatch里面。

这样,如果网络不好,网页打不开,我们还有备用方案(等3秒再试)。

具体步骤:

  1. 拖一个TryCatch指令到流程里。
  2. 在Try部分,添加"打开网页"指令,网址填你要登录的网站。
  3. 在Catch部分,添加"打印日志"(内容:"打开网页失败"),然后添加"等待"3秒。

第二步:用For次数循环,限制最多试5次

登录可能会失败,我们要试多次。

但也不能无限试,所以要限制次数(最多5次)。

具体步骤:

  1. 在TryCatch的后面(或者里面,视你的逻辑而定),拖一个For次数循环指令。
  2. 参数设置:
    • 起始值:1
    • 结束值:5
    • 步长:1
    • 循环变量名:attempt(意思是"当前是第几次尝试")

第三步:在循环体里,输入用户名和密码

具体步骤:

  1. 在For循环的循环体里,添加"填写输入框"指令(用户名)。
  2. 再添加"填写输入框"指令(密码)。
  3. 添加"点击元素"指令(登录按钮)。

拼多多店群自动化上架方案

第四步:用If判断,检查有没有出现验证码

登录之后,网页可能会弹出验证码。

我们要检查一下:验证码出现了没有?

具体步骤:

  1. 在"点击登录按钮"之后,添加一个"元素是否存在"的判断(或者用If指令,判断某个元素是否存在)。
  2. 如果这个元素存在(说明出现了验证码),就进入If的"那么"分支。
  3. 在"那么"分支里,添加"刷新网页"指令,然后加一个"继续循环"指令(跳过这次,进入下一次循环)。

第五步:用If判断,检查是否登录成功

如果没有验证码,或者验证码通过了,我们要检查一下:是不是登录成功了?

具体步骤:

  1. 在前面If判断的"否则"分支里(或者另写一个If判断),检查"登录成功"的标志元素是否存在。
  2. 如果存在,说明登录成功了。
  3. 添加一个"打印日志"(内容:"登录成功!"),然后添加"跳出循环"指令(不用再试了)。

第六步:如果5次都失败了

如果For循环跑完了5次,都没有跳出(说明没有一次成功),我们就要报警。

具体步骤:

  1. 在For循环的后面,添加一个"打印日志"指令。
  2. 内容:"5次尝试都失败了,请人工检查。"
  3. 也可以添加一个"发送邮件"指令,通知管理员。

我当时踩过这个坑

我第一次写这种综合流程的时候,逻辑写反了。

我想的是:如果登录成功了,就跳出循环。

但我把"跳出循环"指令,放在了检查验证码的If判断里面。

结果:只要出现验证码,就跳出循环了,根本没有去处理验证码。

后来我才知道,流程的控制逻辑一定要想清楚:什么情况下该继续,什么情况下该跳出,什么情况下该重试。

我建议你在写之前,先拿一张纸,把流程图画出来。

哪条路是成功,哪条路是失败,哪条路要重试,先想清楚,再动手写。

还有一次,我在For循环里用了"跳出循环",但跳得不是地方。

我想跳出For循环,结果只跳出了内层的一个While循环(如果你有嵌套循环的话,要特别注意"跳出循环"到底跳出的是哪一层)。

在影刀里,"跳出循环"指令会跳出当前这一层循环。

如果你有多层嵌套,你想跳出最外层,你需要在最外层循环里面设置一个"标志变量",然后一层一层地判断这个变量,决定要不要继续。

这个坑我踩过,你别踩了。

12大核心模块之——变量操作

在这个综合案例里,我们会用到好几个变量:

  • attempt:记录当前是第几次尝试(For循环的循环变量)。
  • login_success:记录是不是登录成功了(布尔值,True或False)。
  • captcha_appear:记录是不是出现了验证码(布尔值)。

在复杂的流程里,多用变量来记录状态,会让你逻辑更清晰。

12大核心模块之——指令参数配置

综合流程里,指令会很多。

每一条指令的参数,都要仔细填。

我建议你每填完一条指令,就运行一下,看看这一条指令是不是能正常工作。

不要等到写了几十条指令之后,才一起运行,那样一旦出错,你很难找到是哪条指令的问题。

12大核心模块之——网页元素捕获

在这个案例里,你需要捕获的元素有:

  • 用户名输入框
  • 密码输入框
  • 登录按钮
  • 验证码图片(或者验证码输入框,用来判断是否出现了验证码)
  • 登录成功后的标志元素(比如"退出登录"按钮,或者"欢迎你,XXX"这段文字)

捕获的时候,要给每个元素起一个清楚的名字,这样后面写流程的时候,你才知道你选的是哪个元素。

12大核心模块之——XPath和CSS选择器

如果网页的元素会变(比如每次登录,验证码的id都会变),你可能需要手动改XPath。

比如:验证码图片的id是captcha_12345,下次变成captcha_67890

你不能用//img[@id='captcha_12345']这种固定id的XPath。

要用//img[contains(@id,'captcha_')]这种模糊匹配的XPath。

12大核心模块之——Python脚本

如果有些判断逻辑很复杂,影刀自带的If判断条件不够用。

你可以在流程里插入"执行Python"指令,用Python代码来做判断。

比如:判断验证码图片的链接是不是包含某个关键字。

Python代码可以更灵活地处理字符串、列表、字典等数据。

12大核心模块之——Excel操作

如果用户名和密码不是写死在流程里的,而是存在一个Excel文件里。

你可以先用"读取Excel"指令,把用户名和密码读出来,存到变量里。

然后在流程里用这些变量。

12大核心模块之——数据库操作

如果用户名和密码存在数据库里。

你可以先用"执行SQL查询"指令,查出来,存到变量里。

12大核心模块之——文件操作

如果登录成功之后,你要把一个文件上传到这个网站。

你可以在登录成功之后,用"上传文件"指令。

TEMU店群如何管理运营?

12大核心模块之——邮件操作

如果登录失败5次,你想发邮件通知管理员。

你可以在For循环后面,加一个"发送邮件"指令。

12大核心模块之——调试技巧

综合流程比单一指令复杂得多。

调试的时候,要多用"打印日志"指令。

在关键的地方,都打印一句日志,比如:

  • "开始第1次尝试"
  • "用户名和密码已填写"
  • "登录按钮已点击"
  • "出现验证码,刷新页面"

这样,如果流程出错了,你看日志就能知道,跑到哪一步出的错。

一个完整的例子(流程逻辑描述)

我来描述一下这个完整流程的逻辑,你可以照着搭。

流程逻辑

  1. 尝试打开网页(TryCatch:如果打开失败,等3秒再试)。
  2. 设置attempt = 1login_success = False
  3. For循环,从1到5(attempt):
    • 填写用户名、密码。
    • 点击登录。
    • If判断:验证码是否出现?
      • 是:刷新页面,继续下一次循环。
      • 否:继续下一步。
    • If判断:是否登录成功?
      • 是:打印"登录成功",login_success = True,跳出循环。
      • 否:继续下一次循环。
  4. If判断:login_success是否为False
    • 是:打印"5次都失败了",发送邮件通知。
    • 否:什么都不做(已经成功了)。

XPath示例(判断验证码是否出现):

//div[@id='captcha-modal']

如果这个XPath能找到元素,说明验证码出现了。

CSS选择器示例

div#captcha-modal

Python代码示例(判断登录是否成功):

# 假设 check_login_success() 会返回True或Falselogin_success=check_login_success()iflogin_success:print("登录成功")else:print("登录失败")

配置参数示例(If判断指令,检查元素是否存在):

条件类型:元素是否存在 元素:登录成功标志元素

小结

这篇文章,我们用一个"自动登录网站"的案例,把If判断、For循环、TryCatch都串起来了。

生活中的挂号、刷身份证,也有类似的流程控制。

影刀里的综合流程,就是把各种"积木"组合起来,解决复杂的问题。

记住:写综合流程之前,先画流程图,把逻辑想清楚。

多打印日志,方便找错。

一步一步来,不要一次写太多指令。


home.linyan.cloud


内容标签:影刀RPA 新手教程 流程控制 综合实战 零基础
作者:林焱