连接appium_desktop失败的多个问题(坑)的原因及解决办法

简要说明

错误1: Could not find a connected Android device,按下面原理说明,检查5037端口
错误2:adb 提示adb server version(31) doesn’t match this client(41),首先检查下面第3点提到的Remote path是否是空白的,要改为 /wd/hub,第二:用nox_adb.exe 替换 adb.exe,参考下面特别说明。

根据观察得到的连接原理

  • 原理:模拟器启动后自动产生5037端口本地监听连接(LISTENING),appium_sevrice则通过这个监听端口进行远程连接(ESTABLISHED)和命令发送,inspector则负责发送命令给appium_service。
  • 查看方式:打开cmd窗口,输入 netstat -ano|findstr “5037” 命令,可以查找5037对应的端口号的进程id 也就是pid,可以看到哪些进程使用了5037端口。通过命令 tasklist |findstr “XX”(XX是PID) 或 任务管理器-详细信息-PID中可以查看到具体应用名称。
  1. 启动夜神模拟器,模拟器就会自动调用其自身目录下的nox_adb.exe,并监听端口5037,这个非常重要,否则无法和appium服务连接,如果出现连接错误,比如 Could not find a connected Android device 错误,请特别注意这个进程是否存在,如果没有则重启模拟器,模拟器会自动调用nox_adb.exe启动在5037端口的监听。
    在这里插入图片描述
  2. 启动appium_desktop,等待响应,5037端口不会有变化。在这里插入图片描述
  3. 运行Appium Inspector.exe,正常启动连接后的情况应该是:nox_adb.exe(进程PID不变还是18472) 会再产生两个“本地IP+端口随机”的远程连接(如下面的51131和51194远程端口),同时SDK目录(androidsdk\platform-tools)下的adb.exe开始工作,产生两个“本地IP+对应上面两个随机端口”的进程(如下面PID为19612和19628的进程),而这两个进程远程连接的端口正是5037,模拟器和appium就可以通信了。
    在这里插入图片描述

可能需要替换adb.exe的说明:

如果连接仍有问题,请将模拟器中的nox_adb.exe复制到sdk目录中替换掉原始的adb.exe(原始的可以改名备份留着),以保持模拟器和Inspector中的adb.exe的一致。
在这里插入图片描述在这里插入图片描述

关于几个端口的解释:

appium连接模拟器或手机过程中关联到包括 62001、4723、5037 的3个端口,他们之间的关系是什么?

  • 62001:这个是夜神模拟器的主机+端口(主机:127.0.0.1,端口62001),其他模拟器各自有各自的默认端口,但如果是使用了模拟器多开,这个默认端口是会变化的,具体的查看模拟器端口的方法,可以参考:如何查看夜神模拟器的端口号
  • 4723:这个是appium_service默认主机+端口(主机:0.0.0.0,端口4723),inspector是通过这个端口和appium_service通信。
  • 5037:夜神模拟器提供给appium_service通信主机+端口(主机:127.0.0.1,端口:5037),这个端口在启动appium inspector.exe后由模拟器自动产生,从下面的appium_service日志可以看到大量adb.exe -s 的操作(命令定向),就是服务器将inspector的命令通过5037端口定向到模拟器。在这里插入图片描述
    在这里插入图片描述
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值