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

Appium容器连接远程ADB设备后执行测试报错求助

解决建议

1. 确保ADB版本完全兼容

容器内Appium自带的ADB版本必须和远程电脑上的ADB服务器版本完全一致(包括主版本和小版本)。版本不匹配会导致adb devices能列出设备,但Appium创建会话时无法正常通信。

  • 查看远程ADB版本:adb version
  • 查看容器内ADB版本:进入容器执行adb version
  • 若版本不一致,要么更新远程电脑的ADB到容器内的版本,要么替换容器内的ADB文件为远程的版本。

2. 修正Appium会话配置参数

检查你的驱动配置代码,确保以下关键参数正确:

  • udid:必须和adb devices输出的设备ID完全一致,大小写敏感
  • remoteAdbHost:明确指定远程ADB服务器所在电脑的局域网IP(Appium默认使用本地ADB,必须手动指向远程)
  • platformVersion:匹配真机的Android系统版本(比如13、14)
  • adbPort:远程ADB的端口,默认是5037,确保和远程ADB启动时的端口一致

示例配置代码:

DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("udid", "emulator-5554"); // 替换为你的设备UDID
caps.setCapability("platformVersion", "13");
caps.setCapability("remoteAdbHost", "192.168.1.100"); // 替换为远程电脑IP
caps.setCapability("adbPort", 5037);
caps.setCapability("appPackage", "com.your.app");
caps.setCapability("appActivity", ".MainActivity");

3. 确保远程ADB服务器允许局域网连接

远程电脑的ADB默认只监听localhost,容器无法访问。需要重启ADB并绑定到所有网卡:

adb kill-server
adb -a nodaemon server start

执行后,容器才能通过局域网IP访问远程ADB服务器。

4. 调整容器网络模式

如果使用默认的bridge网络模式,可能存在端口映射或网络隔离问题。尝试用host网络模式启动Appium容器,让容器直接使用主机的网络栈:

docker run --network host -d appium/appium

5. 检查防火墙设置

  • 远程电脑:开放5037端口,允许容器所在主机的IP访问
  • 容器所在主机:确保没有拦截到远程5037端口的连接

6. 查看Appium调试日志

启动Appium时开启调试日志,排查会话创建时的具体错误:

appium --log-level debug

重点查看日志中关于设备查找、ADB连接的部分,比如是否有“无法连接到远程ADB”“设备无响应”等提示。

7. 并行测试的设备分配检查

如果是并行测试,确保每个测试会话都指定了唯一的udid,或者设备池配置正确,避免多个测试进程争抢同一设备,导致会话创建超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:21:10