Appium appium 通过 adb 无线连接 Android 真机

grizz · 2018年08月09日 · 最后由 jie 回复于 2018年12月17日 · 4964 次阅读

一、准备工作

1、准备一台或多台 Android 设备 (如小米,华为),开启 USB 调试
2、Android 设备与电脑 (Mac 或者 Windows) 在同一个局域网内
3、电脑安装好 ADB 工具

二、具体步骤

  1. 使用数据线通过 USB 接口将手机与电脑连接,在终端中执行如下命令:

adb devices 确保设备已经连接成功
adb tcpip 5555(PS:5555 是连接时的默认端口号,可以设置为任何未占用的端口号)
返回restarting in TCP mode port: 5555则代表服务开启成功,可以拔掉数据线断开电脑和手机的连接。

2.找到手机的 IP 地址,执行连接命令:
一般在设置-关于手机-状态信息-IP地址可以找到,或者执行命令:
adb shell ip -f inet addr show wlan0
找到我的手机 IP192.168.20.30

adb connect 192.168.20.30
返回connected to 192.168.20.30:5555代表连接成功
因为我们默认端口是 5555,所以执行 adb connect 192.168.20.30 的时候相当于执行了 adb connect 192.168.20.30:5555,如果 adb tcpip 连接的端口号不是 5555 时 adb connect 时 IP 后需要需要加上端口号。
结果图:

3.断开连接,执行:adb disconnect

PS:如果手机 wifi 断了,也会自动中断连接,需要重新连接。

三.解决的问题

1、我们做 APP 自动化的时候,没有必要每台设备都通过 USB 连接电脑了 (毕竟 USB 端口有限,而且有些线用久了,接触不良的说),只要知道无线连接的 IP 和端口 192.168.20.30:5555
以 python+appium 脚本为例,我们的连接参数可以从

desired_caps={}
desired_caps['platformName']='Android'
desired_caps['deviceName'] = '58d1a05c'
desired_caps['platformVersion'] = '7.0'
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = '.ui.LauncherUI'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

改成

desired_caps={}
desired_caps['platformName']='Android'
desired_caps['deviceName'] = '192.168.20.30:5555'
desired_caps['platformVersion'] = '7.0'
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = '.ui.LauncherUI'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

2、由于可以无线连接设备,在我们跑 APP 自动化脚本的时候还可以很好的监控设备运行过程中的电量消耗,因为连接 USB 时会自动充电,会导致电量计算不准确。

3、当我们需要调试自己手机时,但是手机又需要充电,明显的 USB 充电很慢,这时我们可以 adb 无线连接调试,然后掏出我们的快充闪充给手机,哈哈😀

4、摆脱束缚,调试的时候演示也没必要带着一堆线了,比如 chrome 的 inspect,
chrome://inspect/#devices

四、连接多台设备

当我们连接着两台设备时,执行
adb tcpip 5555

提示:error: more than one device/emulator
此时我们只需要给 adb 命令加上-s 参数,指定设备号即可,其他的操作基本都是一样的了。
adb -s 58d1a05c tcpip 5555

欢迎交流指正,感谢阅读。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

跑自动化测试恨不得排除一切不稳定的因素,如果能用 USB 连接的话,选择无线连接是不是因为某些痛点呢?否则个人理解会带来不稳定的风险

simple 回复

在工作中找运筹帷幄的乐趣😂

请问下每次都得先使用数据线通过 USB 接口将手机与电脑连接后敲 adb 指令后才能无线连接真机吗?

ziqiu 回复

https://blog.csdn.net/only_tan/article/details/46928989
可以参考一下,想不通过数据线直接无线连接的话,手机需要 root

grizz 回复

谢谢指导

atx-uiautomator2 了解一下

无线连接是不是也存在无法使用得场景,我现在测试的 app 需要 WiFi 和 4G 不断来回的切换,切到 4G 肯定就没法用了,要是 4G 也能用就好了

iOS 呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册