WebdriverIO运行Appium测试报onPrepare钩子服务失败排查
故障根因
该问题由两个配置不匹配问题共同触发:
- Appium版本路径差异:你手动启动的Appium Desktop默认兼容旧版1.x的
/wd/hub访问路径,但WDIO内置@wdio/appium-service自动拉起的命令行版Appium 2.x,默认监听的根路径为/,你配置中写死path: '/wd/hub'会导致会话请求路径错误,触发404。 - 端口配置冲突:你同时在基础配置和services启动参数中指定4723端口,部分版本的appium服务会因端口预检查冲突直接退出,返回exit code 1,触发onPrepare钩子报错。
修复步骤
直接修改wdio.conf.js对应配置即可,无需重装Appium或WDIO依赖:
- 修正基础路径配置
找到基础配置块,将path字段改为Appium 2.x默认的根路径,port保持4723不变:
若你本地命令行安装的是Appium 1.x版本,可执行exports.config = { // 其余配置保持不变 port: 4723, path: '/', // ... }appium --version确认版本后保留path: '/wd/hub',目前主流Appium 2.x全版本均使用/作为默认base path - 精简appium服务配置
删除services配置中重复的port声明,增加command参数明确指定调用全局命令行版Appium,避免误调用Desktop内置的版本产生兼容问题:services: [ ['appium', { args: { address: 'localhost', log: './appium.log' // 移除此处重复配置的port参数,统一使用外层基础配置的端口值 }, command: 'appium' }] ] - 前置环境检查
执行用例前先做两项排查排除低级问题:- 关闭所有手动启动的Appium进程、Appium Desktop窗口,释放4723端口避免占用
- 执行
appium driver list确认UiAutomator2驱动已安装,未安装则执行appium driver install uiautomator2完成安装,同时确认Android SDK相关环境变量已在终端全局生效
验证方法
配置修改完成后直接执行npx wdio .\wdio.conf.js,服务会自动拉起Appium进程,在模拟器上安装启动ApiDemos应用,不会再出现钩子报错和404问题。
如果修改后仍出现Appium启动退出的报错,直接打开配置中指定路径生成的
appium.log查看首行错误信息,这类报错基本都是驱动缺失、SDK环境变量配置错误导致,和WDIO框架本身无关。
内容的提问来源于stack exchange,提问作者Ramkumar
相关产品推荐
相关产品推荐

