IntelliJ中Cucumber Appium测试突发启动失败及输入异常求助
Cucumber Appium测试突然失败的排查思路
一、无法启动新会话(远程服务器地址无效/浏览器启动失败)
- 手动启动Appium服务排查:别依赖IDE自动启动,直接在命令行执行
appium,观察控制台输出。如果提示端口被占用,换端口启动试试(appium -p 4724);如果有版本不兼容报错,检查本地Appium版本和项目中appium-java-client的版本是否匹配(比如Appium 2.x需要搭配最新版客户端,旧版客户端可能不兼容)。 - 核对Desired Capabilities与设备状态:确认代码中
appiumUrl是否正确——Appium 2.x默认地址是http://localhost:4723,如果代码里还写着旧版的http://127.0.0.1:4723/wd/hub就会报错。另外用adb devices命令检查设备/模拟器是否正常连接,模拟器有没有闪退、卡死的情况。 - 检查IntelliJ运行配置:打开Run/Debug Configurations,确认环境变量(比如
APPIUM_URL)是否被误改;同时检查项目使用的JDK版本,是否不小心切换到了不兼容的JDK(比如项目原本用JDK11,现在变成了JDK17)。
二、java.lang.IllegalArgumentException: Input must be set(WebDriverWait初始化问题)
- 直接定位LoginScreen的代码逻辑:检查WebDriverWait的初始化代码,比如是不是在
driver实例还未完成初始化时就调用了new WebDriverWait(driver, ...),导致传入了null对象;另外确认是否使用了过时的构造方法——Selenium 4.x之后要求传入Duration类型的等待时间,如果还是用旧的long秒数写法,且依赖的Selenium版本已更新,就会触发参数错误。 - 排查依赖冲突:用Maven的
mvn dependency:tree或Gradle的./gradlew dependencies命令,查看selenium-java和appium-java-client的版本是否存在冲突。比如旧版Appium客户端和新版Selenium不兼容,会导致WebDriverWait的构造参数不匹配。 - 清理IntelliJ缓存:IDE缓存损坏可能导致代码编译异常,执行
File -> Invalidate Caches... -> Invalidate and Restart,重启后重新编译项目。
通用排查方向
- 检查本地系统变化:最近是否更新了操作系统?比如Windows更新后导致adb权限变更,Mac的安全设置阻止Appium访问模拟器;或者安装了杀毒软件,拦截了Appium、adb等进程。
- 重置本地依赖:即使回滚了代码,本地仓库的依赖包可能被自动更新(比如使用了SNAPSHOT版本或动态版本依赖),可以删除本地仓库中
selenium、appium相关的依赖文件夹,重新下载稳定版本。 - 更换测试设备:将模拟器恢复出厂设置,或者换一台真机测试,排除设备本身的异常导致的问题。
内容的提问来源于stack exchange,提问作者Manish Arya
相关产品推荐
相关产品推荐

