Android端运行WebdriverIO+Appium测试时出现会话创建失败错误
连接本地4723端口Appium失败的排查修复方案
按以下优先级逐一排查即可解决问题:
- 先验证Appium基础服务可用性
不要先依赖框架自动拉起Appium服务,手动打开终端执行appium启动服务,查看启动日志是否输出Appium REST http interface listener started on 0.0.0.0:4723。如果启动失败:- 执行
appium --version确认本地安装的Appium版本为2.x,与该脚手架项目的依赖要求匹配,1.x旧版本驱动逻辑不兼容 - 执行
appium doctor检查JAVA_HOME、ANDROID_HOME、platform-tools等环境变量配置是否完整,按提示修复缺失项 - 服务启动后访问
http://localhost:4723/status,能正常返回JSON格式的服务状态信息,才说明端口监听正常
- 执行
- 核对WDIO配置项
打开项目下的WDIO配置文件(通常是wdio.conf.js或对应安卓环境的专属配置):- 如果选择手动启动Appium跑测试,直接注释掉
services数组里的appium配置项,避免框架重复拉起服务导致端口冲突 - 如果需要框架自动管理Appium进程,补全services的启动参数,参考配置:
services: [ ['appium', { args: { address: 'localhost', port: 4723, relaxedSecurity: true }, command: 'appium' }] ] - 确认配置里的
hostname、port字段和Appium实际监听的地址、端口完全一致,避免出现端口改了配置没同步、IP绑定不匹配的问题
- 如果选择手动启动Appium跑测试,直接注释掉
- 检查capabilities配置与设备状态
你更换了新版本演示APK,重点核对以下配置:app字段必须填写APK文件的绝对路径,相对路径容易出现文件找不到的问题,部分场景下Appium不会直接抛路径错误,会卡在会话创建阶段报连接失败- 安卓测试必须补全必填capability项,最小可用配置参考:
capabilities: [{ platformName: 'Android', 'appium:deviceName': 'emulator-5554', // 替换为adb devices查询到的真机/模拟器设备ID 'appium:platformVersion': '13', // 替换为测试设备实际的安卓版本号 'appium:app': '/your/local/path/Android-NativeDemoApp-0.4.0.apk', 'appium:automationName': 'UiAutomator2', 'appium:noReset': false }] - 执行
adb devices确认测试设备处于在线连接状态,设备未授权、未启动的情况下Appium无法创建会话,也会抛出连接类错误
- 排查端口占用问题
执行命令检查4723端口是否被残留进程占用:- Windows系统执行:
netstat -ano | findstr :4723 - Mac/Linux系统执行:
lsof -i :4723 - 如果查到有残留的node、Appium进程占用端口,直接结束对应进程后再重新启动服务
- Windows系统执行:
- 校验依赖与驱动完整性
在项目目录执行yarn list appium webdriverio @wdio/appium-service,确认@wdio/appium-service的大版本号与webdriverio版本完全一致,避免版本冲突。如果使用Appium 2.x版本,必须手动安装UiAutomator2驱动,执行命令appium driver install uiautomator2即可,缺少驱动时Appium无法响应安卓会话创建请求。
内容的提问来源于stack exchange,提问作者Bhoomiputra
相关产品推荐
相关产品推荐

