影刀RPA新手教程:条件判断完全攻略——If与Switch让你不再写死逻辑
影刀RPA条件判断是流程智能化的关键。没有条件判断的流程就像没脑子的机器人——不管页面什么状态都硬着头皮走,走到一半出错也不知道该往哪拐。这篇把影刀里If和Switch的所有写法讲透。
作者:林焱 | 影刀RPA新手教程系列
条件判断的三大场景
每个RPA流程至少会遇到这三种需要判断的情况:
- 状态判断:元素存在吗?登录了吗?数据加载完了吗?
- 分支选择:结果成功了走A流程,失败了走B流程
- 循环控制:翻页翻到什么时候停?数据够100条了吗?
这三种场景对应的指令分别是:If条件、Switch分支、While循环中的条件。
If条件:最基础也最容易写错
基础写法
影刀的If指令判断一个表达式是否为真:
if 变量A > 100: 执行操作1 else: [video(video-6FuWjbmZ-1781421471656)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限!)] 执行操作2支持的比较运算符:><>=<===!=
支持的逻辑组合:andornot
常见误区
误区一:字符串和数字混用
price = "99" # 这是字符串 # 错误:字符串"99"和数字100比较,Python会报错 if price > 100: ...解决:比较前统一类型
price_num=int(price)ifprice_num>100:...误区二:空值判断
# 错误写法ifdata==None:# 用 is None 更好ifdata=="":# 只判断了空字符串,没判断Noneifnotdata:# 0也会被当成False,有歧义# 正确写法ifdataisNoneordata=="":print("数据为空")误区三:多重条件缺少括号
# 错误(容易混淆优先级) if status == "上架" and price > 100 or stock > 0: # 正确(加括号明确意图)  if status == "上架" and (price > 100 or stock > 0):Switch分支:多选一的优雅写法
影刀的Switch适用于"变量等于哪个值就执行哪个分支"。
switch 平台选择: case "淘宝": 执行淘宝采集流程 case "京东": 执行京东采集流程 case "拼多多": 执行拼多多采集流程 default: 记录日志:未知平台什么时候用Switch而不是多个If
# If链(推荐当判断条件不同时)ifplatform=="淘宝":...elifprice>100:# 条件完全不同,用if链...# Switch(推荐当条件基于同一个变量时)switch platform:case"淘宝":...case"京东":...case"拼多多":...简单规则:如果每个分支判断的是同一个变量的不同值,用Switch;如果判断的是不同条件,用If链。
实战场景:流程中的条件判断
场景一:采集结果分支处理
# 运行采集流程,得到结果 采集结果 = 执行子流程("采集商品数据") switch 采集结果.状态: case "成功": if 采集结果.数据数量 > 0: 保存到Excel(采集结果.数据) 发送通知("采集完成,共" + 采集结果.数据数量 + "条") else: 发送通知("采集完成,但无数据") case "登录过期": 执行子流程("重新登录") 重新执行采集 # 回到上一步 case "IP受限": 切换代理IP() 等待(60000) # 等待1分钟 重新执行采集 default: 发送告警("采集异常:" + 采集结果.错误信息)场景二:数据分拣
# 从采集的数据中分类处理foritemin采集数据:price=float(item['价格'])stock=int(item['库存'])ifprice<=0:item['分类']='异常数据'continue# 跳过ifstock==0:item['分类']='已售罄'elifprice<50:item['分类']='低价'elifprice<200:item['分类']='中价'else:item['分类']='高价'场景三:自适应失败重试
尝试次数 = 0 最大尝试 = 3 while 尝试次数 < 最大尝试: 尝试: 点击元素("#submit-btn") break # 成功就跳出循环 捕获 元素不存在: 尝试次数 += 1 if 尝试次数 == 1: [video(video-HpTmsdEU-1781421478194)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)] 等待(2000) # 可能页面还没加载完 elif 尝试次数 == 2: 刷新页面() 等待(5000) else: # 第三次还是失败,不重试了,发告警 发送告警("提交按钮连续3次点击失败") 截图保存("submit_error.png") break嵌套条件的"三层上限"原则
条件嵌套超过三层基本无法维护:
# 反例(四层嵌套,谁看得懂?) if A: if B: if C: if D: ← 疯了 ... # 改成提前返回 if not A: return if not B: return if not C: return if D: ...小结
条件判断的三条心法:
- 判断前先统一数据类型(字符串别和数字比)
- 同一变量的多分支用Switch,不同条件用If链
- 嵌套不超过三层,否则用提前返回拆分
把这些原则内化成习惯,流程的可读性和稳定性会提升一个档次。
内容标签:影刀RPA / 条件判断 / If语句 / Switch / 流程控制
作者:林焱
本文是「影刀RPA从零到实战」系列文章之一,持续更新实操技巧与避坑经验。