Robot Framework中如何创建数组为动态表格传入输入数据
Robot Framework 为动态生成的设备表格传入数组格式测试数据实现方案
针对点击Add Device按钮触发表格新增行的UI场景,可直接通过Robot Framework原生列表(即数组结构)组织测试数据,配合循环逻辑完成批量传参填充,以下是可直接落地的实现方式:
基础实现:用例内定义数组遍历传参
Robot原生支持通过@{变量名}定义列表类型(数组),单台设备的字段参数可以存为字典,整个待添加的设备集合就是嵌套结构的数组,遍历数组逐条触发添加操作即可。
示例代码:
*** Settings *** Library SeleniumLibrary *** Test Cases *** 验证设备表格批量添加逻辑 # 构造数组格式的设备测试数据 @{device_data_list} Create List ... &{dev1} Create Dictionary dev_name=Web-Server-01 dev_ip=192.168.3.12 dev_model=R740 dev_status=Running ... &{dev2} Create Dictionary dev_name=Core-Switch-02 dev_ip=192.168.3.1 dev_model=S6730 dev_status=Running ... &{dev3} Create Dictionary dev_name=Wireless-AP-15 dev_ip=192.168.3.88 dev_model=AP6750 dev_status=Abnormal # 遍历数组逐条添加设备 FOR ${single_dev} IN @{device_data_list} Click Button Add Device # 填充表单字段,元素定位按实际页面属性替换即可 Input Text //input[@placeholder='请输入设备名称'] ${single_dev.dev_name} Input Text //input[@placeholder='请输入IP地址'] ${single_dev.dev_ip} Input Text //input[@placeholder='请输入设备型号'] ${single_dev.dev_model} Select From List By Visible Text //select[@id='status-select'] ${single_dev.dev_status} Click Button 确定 Sleep 0.5s END # 校验表格生成行数和传入数组长度匹配 ${actual_row_num} Get Element Count //div[@class='device-table']//tbody/tr[not(contains(@class,'empty-tip'))] Should Be Equal As Integers ${actual_row_num} ${device_data_list.__len__()}
进阶实现:数据驱动模式传入多组数组
如果需要覆盖不同数据规模、不同字段组合的场景,可以用测试模板把添加逻辑抽成公共关键字,测试用例层直接传入不同的数组数据集即可,不用重复写遍历逻辑。
示例代码:
*** Settings *** Library SeleniumLibrary Test Template 设备表格批量添加校验 *** Test Cases *** 3台正常运行设备场景 @{[ ... {'dev_name': 'DB-Server-01', 'dev_ip': '192.168.4.15', 'dev_model': 'R750', 'dev_status': 'Running'}, ... {'dev_name': 'DB-Server-02', 'dev_ip': '192.168.4.16', 'dev_model': 'R750', 'dev_status': 'Running'}, ... {'dev_name': 'Access-Switch-07', 'dev_ip': '192.168.4.32', 'dev_model': 'S5735', 'dev_status': 'Running'} ...]} 混合状态设备场景 @{[ ... {'dev_name': 'Firewall-01', 'dev_ip': '192.168.4.2', 'dev_model': 'USG6555', 'dev_status': 'Abnormal'}, ... {'dev_name': 'Firewall-02', 'dev_ip': '192.168.4.3', 'dev_model': 'USG6555', 'dev_status': 'Running'} ...]} *** Keywords *** 设备表格批量添加校验 [Arguments] @{input_device_array} # 如有预置默认数据,先执行清空操作 FOR ${dev} IN @{input_device_array} Click Button Add Device Input Text //input[@placeholder='请输入设备名称'] ${dev['dev_name']} Input Text //input[@placeholder='请输入IP地址'] ${dev['dev_ip']} Input Text //input[@placeholder='请输入设备型号'] ${dev['dev_model']} Select From List By Visible Text //select[@id='status-select'] ${dev['dev_status']} Click Button 确定 Wait Until Element Is Visible //tr[contains(.,'${dev['dev_name']}')] timeout=2s END ${actual_count} Get Element Count //div[@class='device-table']//tbody/tr[not(contains(@class,'empty-tip'))] Should Be Equal As Integers ${actual_count} ${input_device_array.__len__()}
注意事项
- 若测试数据存储在外部JSON、CSV、Excel文件中,通过对应库读取后转换为Robot列表结构,即可直接按上述逻辑传入,无需额外格式适配
- 单条设备添加完成后建议加显式等待,确认对应表格行渲染完成再执行下一轮操作,避免页面加载延迟导致元素定位失败
- 若点击
Add Device后弹出模态框,需等模态框完全加载后再填充字段,提交后等模态框消失再触发下一次添加操作
内容的提问来源于stack exchange,提问作者Abhishek K
相关产品推荐
相关产品推荐

