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

如何检查Appium driver是否存活,确保仅在driver有效时执行截图操作

检查Driver存活的实现方案

你可以通过调用Selenium Driver的轻量交互方法,捕获会话失效异常的方式判断driver是否存活,该方式准确性最高,能覆盖远端Sauce Labs主动销毁会话的场景。

不同语言的实现代码如下:

Java 实现

import org.openqa.selenium.NoSuchSessionException;
import org.openqa.selenium.SessionNotCreatedException;

// 原有tearDown逻辑中替换截图部分的代码
try {
    // 调用无副作用的轻量交互方法校验会话状态
    driver.getCurrentUrl();
    takeAllureScreenShot();
} catch (NoSuchSessionException | SessionNotCreatedException e) {
    // 会话已失效,直接跳过截图
    System.out.println("Driver会话已超时销毁,跳过截图操作");
}

如果你使用Selenium 4及以上版本,也可以先判断driver.getSessionId() != null作为前置校验,不过异常捕获的逻辑适配性更强,不需要依赖Selenium版本。

Python 实现

from selenium.common.exceptions import InvalidSessionIdException

# tearDown中的截图逻辑替换为以下代码
try:
    # 校验会话有效性
    _ = driver.current_url
    take_allure_screen_shot()
except InvalidSessionIdException:
    print("Driver会话已失效,跳过截图")

额外优化建议

你也可以通过调整配置从根源避免这个问题:

  • 给Sauce Labs的启动参数添加idleTimeout配置,将闲置超时时间调整为大于3分钟(比如200秒),即可避免会话在数据持久化过程中被提前销毁
  • 数据持久化校验建议通过接口轮询的方式实现,不要阻塞UI层的Driver会话,既可以避免超时问题,也能提升测试执行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:24:01