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

WebdriverIO运行Appium测试报onPrepare钩子服务失败排查

故障根因

该问题由两个配置不匹配问题共同触发:

  1. Appium版本路径差异:你手动启动的Appium Desktop默认兼容旧版1.x的/wd/hub访问路径,但WDIO内置@wdio/appium-service自动拉起的命令行版Appium 2.x,默认监听的根路径为/,你配置中写死path: '/wd/hub'会导致会话请求路径错误,触发404。
  2. 端口配置冲突:你同时在基础配置和services启动参数中指定4723端口,部分版本的appium服务会因端口预检查冲突直接退出,返回exit code 1,触发onPrepare钩子报错。
修复步骤

直接修改wdio.conf.js对应配置即可,无需重装Appium或WDIO依赖:

  • 修正基础路径配置
    找到基础配置块,将path字段改为Appium 2.x默认的根路径,port保持4723不变:
    exports.config = {
      // 其余配置保持不变
      port: 4723,
      path: '/',
      // ...
    }
    
    若你本地命令行安装的是Appium 1.x版本,可执行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 05:03:39