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

如何在Appium测试中使用已有的App Session?

如何在Appium中续接已有的App会话

当然有办法实现Appium会话续接!下面我会分两种常见场景给你详细说明,都是实际项目里常用的方案:

一、通过Capabilities配置保持会话状态(避免重置)

如果你希望每次启动测试时复用之前的应用会话状态(比如保留登录信息、缓存数据),可以通过设置以下Capabilities来实现:

  • noReset: true:这是核心参数,它会让Appium在测试结束后不重置应用的状态(包括用户数据、偏好设置等),下次启动测试时直接复用当前的应用上下文。
  • fullReset: false:这个是默认值,但明确设置可以确保不会执行完全重置操作,和noReset配合使用更稳妥。
  • dontStopAppOnReset: true(仅iOS):额外设置这个参数后,Appium在测试结束后不会停止应用进程,下次启动时直接唤醒已运行的应用实例,进一步提升续接效率。

二、主动续接已运行的Session ID

如果已经有一个正在运行的Appium会话,你可以通过保存的sessionId直接重新连接到该会话,步骤如下:

  1. 首次启动会话时,获取并保存会话ID:
    // Java示例
    String sessionId = driver.getSessionId().toString();
    // 可以把sessionId存在文件或内存中,方便后续使用
    
    # Python示例
    session_id = driver.session_id
    
  2. 需要续接时,使用客户端API连接到已有会话:
    // Java示例
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("platformName", "Android"); // 匹配原会话的平台
    AppiumDriver driver = new AppiumDriver(new URL("http://localhost:4723/wd/hub"), caps);
    driver.setSessionId(sessionId); // 传入保存的会话ID
    // 现在可以继续使用driver执行操作了
    
    # Python示例
    from appium import webdriver
    
    caps = {"platformName": "Android"} # 匹配原会话的平台配置
    driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
    driver.session_id = session_id # 替换为保存的会话ID
    

注意事项

  • 续接会话的前提是原会话仍在运行:Appium服务不能重启,原会话也没有被手动终止或超时关闭。
  • 客户端与服务端的Appium版本尽量保持一致,避免因版本兼容问题导致续接失败。
  • 如果使用云测试平台,部分平台支持会话续接功能,但需要遵循平台特定的配置规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:03