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

如何使用Robot Framework正确退出Appium测试会话并设置状态?

运行Robot Framework Appium脚本时正确关闭BrowserStack会话的方案

问题根因

执行完步骤后BrowserStack显示TIMED OUT,核心原因有两点:

  • 脚本中Open Application的参数存在语法错误:browserstack.idleTimeout=${browserstack.idleTimeout位置漏写了变量闭合的右花括号,也未和后续的browserstack.appium_version参数做分隔,导致BrowserStack未读取到自定义的超时配置,使用了默认超时规则。
  • 仅调用Quit Application不会主动向BrowserStack传递测试终态,平台未收到明确的会话结束标记和测试结果时,会一直保持会话连接直到触发超时判定。如果用例执行中途报错,还会直接跳过普通步骤里写的Quit Application,导致会话一直挂起。

具体修复步骤

  1. 首先修正Open Application的参数语法错误,补全变量闭合和参数分隔,建议将browserstack.idleTimeout设置为300秒(可根据实际用例时长调整),避免正常执行时被误判超时,修正后的启动代码参考:
*** Test Cases ***
    
Open App
    Open Application    ${Remote_Url}   platformName=${PlatformName}    deviceName=${device}
  ...  platformVersion=${os_version}    app=${app}  name=${name}    build=${Build}  orientation=${Landscape}
  ...  autoAcceptAlerts=${AutoAcceptAlerts}  browserstack.idleTimeout=300
  ...  browserstack.appium_version=1.21.0
  
Login in to app
    Input Text    id=txt-username   my_username
    Input Text    id=txt-password   my_username
    Click Element    id=btn-login

    Wait Until Page Contains Element  id=img-userprofile    timeout=10

注意:替换掉原来硬写的Sleep 5,直接给元素等待关键字加超时参数即可,减少无意义的会话占用时间。

  1. 不要把关闭会话的逻辑放在用例普通步骤里,改用Robot Framework的Test Teardown机制,保证无论用例执行成功还是失败,收尾逻辑都会被强制执行,配置方式:
*** Settings ***
Library    AppiumLibrary
Test Teardown    BrowserStack Session Cleanup
  1. 自定义收尾关键字,在关闭应用前主动向BrowserStack回传测试状态,再销毁Appium会话,平台收到状态标记和关闭请求后会立刻更新会话结果,不会等待超时,关键字实现参考:
*** Keywords ***
BrowserStack Session Cleanup
    # 获取当前用例执行结果
    ${is_passed}    Evaluate    "${TEST_STATUS}" == "PASS"
    # 向BrowserStack传递测试状态
    Run Keyword If    ${is_passed}    Execute Script    browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed", "reason": "All steps executed successfully"}}
    Run Keyword Unless    ${is_passed}    Execute Script    browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed", "reason": "Test execution failed"}}
    # 销毁Appium会话
    Quit Application

排查验证点

  • 如果上述配置完成后仍出现超时问题,可以先升级AppiumLibrary到最新稳定版,旧版本存在Quit Application未正确发送会话销毁请求的已知bug。
  • 执行脚本时可以查看Appium请求日志,确认存在DELETE /session类型的请求,该请求是会话销毁的标记,正常发出后平台就会接收到会话关闭指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:27:35