影刀RPA新手教程:流程控制综合实战——用一个完整案例串起判断、循环、异常处理
影刀RPA新手教程流程控制综合实战——用一个完整案例串起判断、循环、异常处理前面几篇文章我们分别学了If判断、For循环、While循环、ForEach循环、嵌套循环、TryCatch。它们就像乐高积木单独用也能解决问题。但真正的威力是把它们组合起来搭成一个完整的流程。这篇文章我们就用一个完整的案例把这些积木都串起来。案例自动登录一个网站我们要做的事情是自动打开一个网站输入用户名和密码点击登录。但如果出现了验证码我们就刷新页面重新来过。最多试5次如果5次都失败就停止并报警。生活中的类似场景这就像你去医院挂号。你要先刷身份证输入用户名密码。如果系统正常你就挂上号了登录成功。但如果系统弹出一个验证码你要看图识字你第一次可能输错。你就刷新页面重新来。但医院规定最多让你试5次5次都错就把你身份证锁住停止并报警。第一步打开网页TryCatch处理网络错误我们先把打开网页这个可能会出错的操作放在TryCatch里面。这样如果网络不好网页打不开我们还有备用方案等3秒再试。具体步骤拖一个TryCatch指令到流程里。在Try部分添加打开网页指令网址填你要登录的网站。在Catch部分添加打印日志内容打开网页失败然后添加等待3秒。第二步用For次数循环限制最多试5次登录可能会失败我们要试多次。但也不能无限试所以要限制次数最多5次。具体步骤在TryCatch的后面或者里面视你的逻辑而定拖一个For次数循环指令。参数设置起始值1结束值5步长1循环变量名attempt意思是当前是第几次尝试第三步在循环体里输入用户名和密码具体步骤在For循环的循环体里添加填写输入框指令用户名。再添加填写输入框指令密码。添加点击元素指令登录按钮。拼多多店群自动化上架方案第四步用If判断检查有没有出现验证码登录之后网页可能会弹出验证码。我们要检查一下验证码出现了没有具体步骤在点击登录按钮之后添加一个元素是否存在的判断或者用If指令判断某个元素是否存在。如果这个元素存在说明出现了验证码就进入If的那么分支。在那么分支里添加刷新网页指令然后加一个继续循环指令跳过这次进入下一次循环。第五步用If判断检查是否登录成功如果没有验证码或者验证码通过了我们要检查一下是不是登录成功了具体步骤在前面If判断的否则分支里或者另写一个If判断检查登录成功的标志元素是否存在。如果存在说明登录成功了。添加一个打印日志内容登录成功然后添加跳出循环指令不用再试了。第六步如果5次都失败了如果For循环跑完了5次都没有跳出说明没有一次成功我们就要报警。具体步骤在For循环的后面添加一个打印日志指令。内容5次尝试都失败了请人工检查。也可以添加一个发送邮件指令通知管理员。我当时踩过这个坑我第一次写这种综合流程的时候逻辑写反了。我想的是如果登录成功了就跳出循环。但我把跳出循环指令放在了检查验证码的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[idcaptcha_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次尝试用户名和密码已填写登录按钮已点击出现验证码刷新页面这样如果流程出错了你看日志就能知道跑到哪一步出的错。一个完整的例子流程逻辑描述我来描述一下这个完整流程的逻辑你可以照着搭。流程逻辑尝试打开网页TryCatch如果打开失败等3秒再试。设置attempt 1login_success False。For循环从1到5attempt填写用户名、密码。点击登录。If判断验证码是否出现是刷新页面继续下一次循环。否继续下一步。If判断是否登录成功是打印登录成功login_success True跳出循环。否继续下一次循环。If判断login_success是否为False是打印5次都失败了发送邮件通知。否什么都不做已经成功了。XPath示例判断验证码是否出现//div[idcaptcha-modal]如果这个XPath能找到元素说明验证码出现了。CSS选择器示例div#captcha-modalPython代码示例判断登录是否成功# 假设 check_login_success() 会返回True或Falselogin_successcheck_login_success()iflogin_success:print(登录成功)else:print(登录失败)配置参数示例If判断指令检查元素是否存在条件类型元素是否存在 元素登录成功标志元素小结这篇文章我们用一个自动登录网站的案例把If判断、For循环、TryCatch都串起来了。生活中的挂号、刷身份证也有类似的流程控制。影刀里的综合流程就是把各种积木组合起来解决复杂的问题。记住写综合流程之前先画流程图把逻辑想清楚。多打印日志方便找错。一步一步来不要一次写太多指令。home.linyan.cloud内容标签影刀RPA 新手教程 流程控制 综合实战 零基础作者林焱