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

Android Appium测试遇NoSuchSessionException:Thread.Sleep120秒触发异常

解决方案:Appium长时间无操作触发NoSuchSessionException

核心原因

长时间无操作时,Appium服务器或UiAutomator2驱动会因超时判定会话失效,主动终止连接。

具体解决办法

  • 调整Appium服务器命令超时
    启动Appium时设置更长的命令超时时间(建议大于120秒),同时开启会话覆盖:

    appium --session-override --command-timeout 300
    

    若通过代码启动服务,配置示例:

    AppiumServiceBuilder serviceBuilder = new AppiumServiceBuilder();
    serviceBuilder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
    serviceBuilder.withArgument(GeneralServerFlag.COMMAND_TIMEOUT, "300");
    AppiumDriverLocalService service = serviceBuilder.build();
    service.start();
    
  • 配置UiAutomator2驱动超时参数
    在DesiredCapabilities中添加针对UiAutomator2的超时设置,避免驱动进程超时:

    DesiredCapabilities caps = new DesiredCapabilities();
    // 其他基础配置(platformName、deviceName等)...
    caps.setCapability("uiautomator2ServerLaunchTimeout", 300000); // 300秒,单位毫秒
    caps.setCapability("idleTimeout", 300); // 会话空闲超时,单位秒
    caps.setCapability("uiautomator2ServerInstallTimeout", 300000);
    AndroidDriver driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), caps);
    
  • 替换Thread.sleep,保持会话活跃
    不要完全无操作等待,每隔一段时间执行轻量无副作用操作维持会话,示例:

    long waitDuration = 120000; // 目标等待120秒
    long checkInterval = 10000; // 每10秒执行一次轻量操作
    long endTime = System.currentTimeMillis() + waitDuration;
    
    while (System.currentTimeMillis() < endTime) {
        // 执行如获取当前上下文的轻量操作
        driver.getContext();
        Thread.sleep(checkInterval);
    }
    
  • 检查设备休眠设置
    确保测试设备的自动休眠时间大于120秒,或直接关闭自动休眠,避免设备休眠导致会话断开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:15:03