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

Selenium+AppiumDriver报java.lang.reflect.InvocationTargetException错误

根因定位

java.lang.reflect.InvocationTargetException是Java反射调用时的包装异常,仅代表反射调用的目标方法抛出了异常,并非错误根源。从报错栈可以看出,实际触发错误的核心原因是org.openqa.selenium.NoSuchSessionException:Appium服务端找不到ID为cf4e113d-a5e7-42f1-a1a3-fa0a90049d63的驱动会话。

常见触发场景与解决方法
  • 旧残留会话冲突
    上一次测试结束后未正常调用driver.quit()释放会话,Appium服务端留存了失效会话记录,新会话创建时出现冲突。

    解决:重启Appium服务端,测试代码执行完成后必须显式调用driver.quit()释放资源。启动Appium服务时可添加--session-override参数,允许自动覆盖旧会话避免冲突。

  • 依赖版本不兼容
    你使用的Selenium版本为3.141.59,需对应匹配Appium Java客户端、Appium服务端版本,跨大版本混用会出现会话创建异常。

    解决:Selenium 3.x版本需搭配Appium Java客户端7.x版本、Appium服务端1.x版本使用,不要和Selenium 4.x、Appium Java客户端8.x、Appium 2.x跨版本混用。

  • 初始化参数配置错误
    Desired Capabilities配置的设备ID、应用包名/启动页、系统版本等参数和实际测试环境不匹配,导致Appium无法初始化驱动生成有效会话。

    解决:核对udid(设备唯一标识)、platformVersion(设备系统版本)、appPackage/appActivity(安卓应用标识)等必填参数是否和测试设备、测试应用完全匹配。

  • 设备连接异常
    测试设备USB连接中断、adb服务异常,导致Appium和设备通信中断,会话直接失效。

    解决:重新插拔设备USB线,执行adb kill-server && adb devices重启adb服务,确认设备被正常识别后再启动测试。

  • Java版本兼容性问题
    你使用的Java版本为16,Selenium 3.141.59官方适配的Java版本为8/11,高版本Java的模块化特性会触发反射调用异常。

    解决:将运行环境切换为Java 11,即可规避高版本Java带来的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:04