You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:51:23