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

如何用Robot Framework/Python获取站点文件夹文件列表?API相关疑问

解决方案与建议

一、关于未公开API的可用性判断

你可以先尝试验证这个API的可用性:

  1. 打开浏览器Network Tab,找到该请求并复制请求头(尤其是Cookie、Authorization这类身份验证字段),用Postman或Robot的RequestsLibrary发送相同请求,看是否能返回JSON/XML这类结构化数据。
  2. 注意风险:未公开API没有官方维护承诺,字段、参数甚至URL都可能随时变更;同时要确认网站服务条款是否禁止直接调用内部API,避免合规问题。如果是个人临时使用且无明确禁止,可尝试,但长期依赖不推荐。

二、浏览器Network Tab核心字段快速理解

不用找外部资源,实操学习最快,核心字段说明:

  • Name:请求的资源路径或别名,点击可查看请求详细信息
  • Status:HTTP状态码,200代表请求成功,401代表身份验证失效,404代表资源不存在
  • Type:返回资源的类型,比如json是结构化数据接口,document是网页文档,script是脚本文件
  • 重点关注标签页:
    • Headers:请求头(如Cookie、User-Agent)和响应头(如Content-Type)
    • Payload:GET请求的查询参数、POST请求的提交数据
    • Response:服务器返回的具体内容,判断是否包含所需的文件夹/文件数据

随便打开一个网站,刷新页面后逐个点击Network里的请求,对照上述说明查看字段,很快就能掌握基本用法。

三、Robot Framework实现文件名获取的两种方法

方法1:UI自动化遍历(稳定但速度慢)

用SeleniumLibrary模拟人工操作,递归遍历文件夹和子文件夹:

*** Settings ***
Library    SeleniumLibrary

*** Variables ***
${BASE_URL}    http://example.com/applications/folders/
${FOLDER_LOCATOR}    xpath://div[contains(@class,'folder-item')]
${FILE_LOCATOR}    xpath://div[contains(@class,'file-item')]

*** Test Cases ***
Collect All Files
    Open Browser    ${BASE_URL}    chrome
    # 此处省略已完成的登录步骤
    ${all_files}=    Create List
    Call Keyword    TraverseFolder    ${all_files}
    Log List    ${all_files}
    Close Browser

*** Keywords ***
TraverseFolder
    [Arguments]    ${file_list}
    # 获取当前页面所有文件并加入列表
    ${current_files}=    Get WebElements    ${FILE_LOCATOR}
    :FOR    ${file}    IN    @{current_files}
    \    ${name}=    Get Text    ${file}
    \    Append To List    ${file_list}    ${name}
    # 递归遍历子文件夹
    ${folders}=    Get WebElements    ${FOLDER_LOCATOR}
    :FOR    ${folder}    IN    @{folders}
    \    Click Element    ${folder}
    \    Sleep    2s    # 等待页面加载
    \    Call Keyword    TraverseFolder    ${file_list}
    \    Go Back
    \    Sleep    2s    # 等待回退加载

方法2:调用API接口(速度快但依赖API稳定性)

用RequestsLibrary直接请求API,解析JSON响应获取文件名:

*** Settings ***
Library    RequestsLibrary
Library    Collections

*** Variables ***
${API_BASE}    http://example.com/exp/api/app/objects
${SESSION_COOKIE}    # 从登录后的浏览器Cookie中提取,如SESSIONID=xxx
${AUTH_TOKEN}    # 如果有Bearer Token,填写此处

*** Test Cases ***
FetchFilesViaAPI
    Create Session    example_api    ${API_BASE}
    # 构造带身份验证的请求头
    ${headers}=    Create Dictionary
    Set To Dictionary    ${headers}    Cookie    ${SESSION_COOKIE}
    Set To Dictionary    ${headers}    Authorization    Bearer ${AUTH_TOKEN}
    ${all_files}=    Create List
    Call Keyword    FetchFolderData    /appFolder/?brief=true    ${headers}    ${all_files}
    Log List    ${all_files}

*** Keywords ***
FetchFolderData
    [Arguments]    ${api_path}    ${headers}    ${file_list}
    ${resp}=    Get Request    example_api    ${api_path}    headers=${headers}
    Should Be Equal As Integers    ${resp.status_code}    200
    # 解析JSON响应(假设返回结构为{"data": {"folders": [], "files": []}})
    ${data}=    Convert To Json    ${resp.content}
    # 添加当前文件夹的文件
    :FOR    ${file}    IN    @{data['data']['files']}
    \    Append To List    ${file_list}    ${file['name']}
    # 递归请求子文件夹
    :FOR    ${folder}    IN    @{data['data']['folders']}
    \    ${sub_path}=    Catenate    /appFolder/${folder['id']}/?brief=true
    \    Call Keyword    FetchFolderData    ${sub_path}    ${headers}    ${file_list}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:24:17