You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Robot Framework实现多文件上传?

如何用Robot Framework实现多文件批量上传

嘿,这个场景我之前做自动化测试时也碰到过!其实Choose File关键字本身就支持多文件上传,只是需要结合文件路径拼接和目录遍历的小技巧,就能轻松实现选中指定目录下所有文件并上传的需求,下面给你详细拆解步骤:

核心原理

Choose File的第二个参数(文件路径)支持传入多个文件路径,用对应操作系统的分隔符隔开

  • Windows系统用分号 ; 分隔
  • macOS/Linux系统用冒号 : 分隔

所以我们只需要先获取目标目录下的所有文件路径,再按系统规则拼接成字符串,传给Choose File就行。

具体实现步骤

1. 导入必要的库

首先要导入操作浏览器的SeleniumLibrary和处理文件系统的OperatingSystem库:

*** Settings ***
Library    SeleniumLibrary
Library    OperatingSystem

2. 编写测试用例

下面是完整的测试用例示例,包含目录文件获取、路径拼接和上传操作:

*** Test Cases ***
批量上传指定目录下所有文件
    # 1. 打开目标上传页面
    Open Browser    https://your-upload-page-url.com    chrome
    Maximize Browser Window

    # 2. 定义要上传的文件目录(替换成你的实际路径)
    ${target_upload_dir}    Set Variable    /Users/xxx/test-upload-files    # Windows路径示例:C:\\test-upload-files

    # 3. 获取目录下所有文件的完整路径
    # 若需要包含子目录文件,可添加参数 recursive=True
    ${all_files}    List Files In Directory    ${target_upload_dir}

    # 4. 根据操作系统选择路径分隔符
    ${path_sep}    Run Keyword If    ${OS} == WINDOWS    Set Variable    ;    ELSE    Set Variable    :

    # 5. 把所有文件路径拼接成符合要求的字符串
    ${upload_file_paths}    Join Strings    ${all_files}    separator=${path_sep}

    # 6. 定位上传输入框并完成多文件上传
    # 注意:上传输入框必须支持多文件(HTML标签带有multiple属性)
    Choose File    id=upload-input    ${upload_file_paths}

    # 7. 后续操作:比如点击上传按钮提交
    Click Button    id=submit-upload-btn

    # 关闭浏览器
    Close Browser

关键注意事项

  • 确认上传控件支持多文件:检查页面的上传输入框是否有multiple属性,如果没有,就算传入多个文件路径也只能上传第一个。
  • 使用绝对路径:尽量用文件的绝对路径,避免相对路径带来的路径解析问题。
  • 过滤文件类型(可选):如果只需要上传特定类型的文件(比如仅.txt),可以用List Files In Directorypattern参数,例如:List Files In Directory ${target_upload_dir} pattern=*.txt

内容的提问来源于stack exchange,提问作者syc1723

火山引擎 最新活动