Robot Framework使用IF条件实现IO卡类型识别方法
Robot Framework 实现IO卡类型自动识别判断方案
实现思路
执行按钮选择操作前,先从当前页面对象中提取对应卡槽的编号,匹配预置的IO卡槽类型映射表,通过Robot Framework内置的IF条件分支判断卡类型,匹配成功后再执行对应卡类型的专属操作,避免选错操作对象。
已知卡槽类型规则:
- 标识为
DI的卡槽属于输入卡(INPUT Card) - 标识为
DO的卡槽属于输出卡(OUTPUT Card)
具体实现代码
1. 预置卡槽配置变量
把已知的IO卡槽配置定义为字典变量,后续配置变更只需要修改变量内容,不需要调整核心逻辑:
*** Variables *** # IO卡槽类型映射,键为槽位号,值为卡类型标识 &{IO_CARD_MAP} 1=DI 2=DI 3=DI 4=DI 5=DO 6=DO 7=DI
2. 核心判断逻辑关键字
*** Keywords *** 校验卡类型并执行选择操作 [Arguments] ${slot_element} # 从传入的卡槽元素中提取槽位编号,适配页面上"SLOT X"格式的文本 ${slot_text} Get Text ${slot_element} ${current_slot} Get Regexp Matches ${slot_text} SLOT\\s+(\\d+) 1 ${current_slot} Convert To Integer ${current_slot} # 先判断槽位是否在配置范围内 IF $current_slot not in $IO_CARD_MAP FAIL 槽位${current_slot}不在已知IO卡配置列表中,终止操作 END # 匹配卡类型走对应分支 ${card_flag} Set Variable ${IO_CARD_MAP}[${current_slot}] IF '${card_flag}' == 'DI' Log 当前识别为*输入卡(INPUT Card)*,槽位号:${current_slot} # 此处替换为输入卡对应的实际选择操作步骤 点击输入卡选择按钮 校验输入卡点位加载状态 ELSE IF '${card_flag}' == 'DO' Log 当前识别为*输出卡(OUTPUT Card)*,槽位号:${current_slot} # 此处替换为输出卡对应的实际选择操作步骤 点击输出卡选择按钮 校验输出卡点位加载状态 END
注意事项
- 如果页面槽位编号不是从元素文本提取,而是存放在元素属性(比如
data-slotid)中,只需要调整提取槽位号的对应代码即可,判断逻辑无需改动 - 若需要双重校验避免配置和页面不一致,可以在IF分支内增加页面卡类型标题的校验步骤,比如判断当前卡区域是否包含
INPUT/OUTPUT文本,和映射表匹配后再执行操作 - 后续卡槽硬件配置调整时,直接更新
${IO_CARD_MAP}的键值对即可完成适配
内容的提问来源于stack exchange,提问作者Abhishek Kambalapalli
相关产品推荐
相关产品推荐

