☰
影刀RPA新手教程:If条件判断与循环配合的5个实用模式
2026/10/3 6:53:48 网站建设 项目流程

影刀RPA新手教程:If条件判断与循环配合的5个实用模式

循环会转了,但流程还是傻——不管页面有没有弹窗都去点,不管数据是不是空的都往Excel里写,遇到两种状态的处理方式还不一样就彻底没辙。这些问题的答案全是If条件判断。我做影刀RPA的头两个月,流程全靠"顺序执行"硬撑,直到被一个登录弹窗折腾了三天,才认真把If和循环的配合套路一个个磨出来。

这篇给你5个我天天在用的实用模式,每个模式都说清楚用什么指令、参数怎么填、坑在哪。

先认识If家族:条件、网页包含、End If的分工

影刀RPA的If家族指令不少,新手先掌握这三个:【IF 条件】做变量和文本的逻辑判断,参数是对象1、关系、对象2三段式,关系下拉里有等于、大于、包含、为空等可选;【IF 网页包含】检测指定的文本或元素是否出现在网页中,参数里"检测网页是否"可以选包含元素(从元素库选已捕获的元素)或包含文本(直接输入文字);【End If】是每个If的收口,漏了会直接报IndentationError。

两个易混指令要分清:【IF 网页包含】判断的是"元素或文本在不在",【IF 元素可见(web)】判断的是"在不在视口里显示"。一个藏在下拉里的元素,前者判真后者判假,选错指令排查半天。

多状态场景用【Else IF】和【Else IF多条件】串分支,最后必须有【End If】封口。所有If指令的判断依据尽量选稳定的东西:class属性、固定文案、变量值,别用会变的坐标。

模式一:循环内跳过——不符合条件的数据直接略过

场景:抓一个商品列表,只要价格低于100的,其他的跳过。这是最基础的模式,For次数循环或循环相似元素的循环体里放【IF 条件】。

结构流程图式拆解:

  1. 循环相似元素(web)抓取价格列,元素操作选获取元素文本内容,存到变量"价格文本"
  2. 循环体里放【IF 条件】:对象1选价格文本,关系选"小于",对象2填100
  3. 条件成立(If分支内):执行清洗和写入Excel的指令
  4. 条件不成立什么都不做,直接走到循环结束进入下一项

坑点:价格文本是"¥1,299.00"这种字符串,直接比较会报类型错误,先做替换去掉符号再转数字。这个模式每天要用几十遍,练熟它。

模式二:弹窗拦截——操作前先判断元素存在

场景:点击搜索按钮前页面可能弹出广告或登录框,不处理就点不到目标。模式是在关键操作前放【IF 网页包含】,判断弹窗元素是否存在。

结构拆解:

  1. 【IF 网页包含】:网页对象选当前页面,检测网页是否选"包含元素",从元素库选之前捕获的弹窗关闭按钮
  2. 包含(If分支内):【点击元素(web)】点掉关闭按钮,再放一条等待指令
  3. 不包含(Else分支内):什么都不做或记一条日志
  4. If结束后再执行原本的搜索操作

配套的XPath参考:

# 捕获元素:登录弹窗的关闭按钮(IF网页包含判断目标) //div[@class="login-dialog"]//img[@class="close-btn"] # 模糊匹配:查找包含"关闭"文字的任意可点元素 //*[contains(text(),"关闭")] ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5cfa73a4357940fcae03aeea9b4ba781.png#pic_center) # 捕获元素:搜索输入框(弹窗处理完后的主操作目标) //*[@id="search-input"]

这个模式的变体是用【IF 网页包含】判断"包含文本",比如判断页面有没有出现"登录已过期",有就走重新登录分支。文字判断比元素判断更抗页面改版,能用文字就用文字。

模式三:双列表下标关联——长度相同时按下标配对

场景:页面上商品标题和价格是两列分开渲染的,需要配对写入。如果两个相似元素列表长度永远相同,可以只循环其中一个,用下标去另一个列表里取对应项。

结构拆解:

  1. 循环相似元素抓标题列,勾选"输出循环项的位置"得到位置变量
  2. 循环体里用【获取相似元素列表】一次性拿到价格列表变量
  3. 【IF 条件】:对象1是位置变量,关系"小于",对象2是价格列表的长度——防止标题比价格多一条时下标越界
  4. 条件成立才按下标取价格,和标题一起写入

这个If判断就是保险丝。我踩过直接取下标的坑:页面最后一条商品价格渲染慢,价格列表比标题短一个,流程当场报下标越界。加了长度判断之后,短了就跳过并记日志,问题消失。

模式四:无限循环加退出条件——不知道要循环几次

场景:翻页抓取但不知道总页数,或者要一直点"加载更多"直到按钮消失。用无限循环配合【退出循环】指令。

结构拆解:

  1. 无限循环指令开头
  2. 循环体第一步:【IF 网页包含】判断下一页按钮是否还存在(或"加载更多"是否还在)
  3. 不存在(If分支内):【退出循环】直接跳出整个循环
  4. 存在:抓当前页数据,点击翻页,等待加载

退出循环这条指令可以对For次数循环、ForEach列表循环、循环相似元素做动态控制,所以同样的结构也能用在"循环里遇到某个特殊值提前收工"的场景。务必再串一个防死循环计数器:循环体里让计数变量加1,【IF 条件】判断计数超过500就退出循环并Raise抛出异常——我有过一次判断元素捕获错了,无限循环空转了一小时,从那以后没有计数器的无限循环我一律不跑。

模式五:Else IF多状态分支——一种数据多种处理

场景:订单状态有"待发货、已发货、已完成、已取消"四种,每种要写入不同的表格或执行不同的后续操作。用【Else IF多条件】串起来。

结构拆解:

  1. 【IF 条件】:状态变量等于"待发货",分支内写入待发货表
  2. 【Else IF】:状态变量等于"已发货",分支内写入发货表并发飞书通知
  3. 【Else IF】:状态变量等于"已取消",分支内只记日志
  4. 最后的【Else】兜底:未知状态写进异常表,截图留证
  5. 【End If】收口

兜底的Else分支是我吃了亏加上的:某天平台新增了"Partial"状态,四个已知分支全不命中,数据无声无息丢了。有了兜底分支,新状态一出现就能在异常表里看到,马上补逻辑。

If之外还要补的课:全模块坐标

If和循环是流程控制的两大件,但一个能跑的流程还需要这些配套。安装:装好浏览器插件才有网页自动化。元素定位四合一:IF网页包含里用的元素,捕获时多校验几条保证是整组;XPath的contains()写法和CSS的属性选择器都能做模糊匹配,按文本判断优先XPath。变量类型:IF条件比较前先统一类型,字符串数字互转是最常见的坑。流程控制:五种循环加If加Try-Catch,本篇的5个模式就是它们组合拳的招式表。网页自动化:三种等待指令放在If判断之前,页面没加载完判断必然失真。

数据处理:Excel读写配合模式一做条件写入,文本清洗配合模式五做状态归一。鼠标键盘图像:【IF 图像存在】和【IF 屏幕上存在文本(OCR)】是元素定位失灵时的判断备胎,桌面软件自动化离不开它们。进阶技能:HTTP请求的状态码用IF条件判断,200走正常流程,401走重新鉴权。平台实战:小红书搜索结果分"图文和视频"两种卡片,用模式五分流处理;拼多多弹窗密集,模式二要嵌套两层。系统联动:飞书群机器人的通知开关用IF条件控制,只有异常时才发,避免刷屏。工程化规范:If嵌套超过三层就拆子流程,调试时右键添加断点单步执行,盯着变量面板看每个分支的走向。

易错速查:If条件5个高频坑

  1. 报IndentationError: expected an indented block:用了IF但没放【End If】,或者Else IF写在了If块外面
  2. 数字比较报类型错误:IF条件拿字符串和数字比较,先转成同类型再比
  3. IF网页包含永远判假:网页对象选错了,或元素捕获时机太早页面还没渲染出来,前面加等待指令
  4. 弹窗判断和点击之间页面又弹了新的:判断和操作间隔太长,把弹窗处理封装成子流程在每次操作前调用
  5. 多状态分支漏了未知状态:最后一个Else兜底分支永远要写,配合截图和日志留证

学习资源与延伸阅读

If配循环的5个模式,覆盖了我日常流程里九成的判断场景。每个模式我都做成了带注释的示例流程,源码放在代码仓库 home.linyan.cloud,可以直接参考改造,对着自己业务改判断条件就能上手用。


#影刀RPA #RPA自动化 #条件判断 #流程控制 #网页自动化

作者:林焱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询