Appium 通过无线连接的方式来做 Appium 自动化

Vincent · 2014年09月11日 · 最后由 branezhang 回复于 2023年06月01日 · 7049 次阅读
本帖已被设为精华帖!

感谢 TesterHome 里各种大牛,提出的宝贵思路,我这里只是将他们的想法综合了一下,试出来的成果,谢谢大家分享你们的智慧。

简单说下背景:
由于公司要测试 APP 产品的耗电问题,我们采取的办法很 low,对各个模块功能进行大量的手动测试,再通过 Emmagee 或 GT 得出来的结果来评估产品耗电,流量,CPU,内存的消耗等。由于手工效率太低,而且不准确,我们就决定用自动化来实现,但用自动化又面临了一个 USB 接电脑供电的问题,从而导致计算出来的功耗与手动跑的有很大的误差。
万般寻找,终于在 Testerhome 里等到牛人给了我解决的思路和方案,感受颇深,仅仅的几个字就解决了我的问题,而且很优雅。

直入主题。

我们通常做安卓自动化的时候,总是需要将手机连接到电脑,直到@cjtcwyk 提出的可使用 adb connect 命令来实现无线连接手机,一听到果断入手搜索相关 APP,走完一遍流程,原来是如此的简单。

我们可以在商店里面下一个叫 Wireless ADB(下图为豌豆荚),安装完关闭豌豆荚

安装完后图标如下:

接下来至少要保证 2 件 事情:
1,确保手机已经 Root 了
2,手机和 PC 要在一个网段 (从 PC 端可以 ping 通手机端的 IP 地址)

这 2 件事情办好就好办多了,打开安装后的 Wireless ADB.

勾中 Wireless ADB 的 checkbox,后它就认为是开启了
当然这里我们还可以设置它的端口,默认为 5555

下一步开始通过无线来连接手机,在 PC 端 CMD 下 输入你手机的 IP 地址和它的端口号后回车

成功连接上。

如果出现了 not implement 这个错误,请关掉豌豆荚,360 等软件,很可能是有冲突

连接成功后,就可以开始正常的自动化工作了。

启动 appium 和 adb connect

无线启动 appium 感觉比有线稍微慢一点点,大概也就 10 来秒,可以接受范围

成功无线运行脚本测试 APP.

差不多就这些了,经测试脚本运行的速度和有线并无太大的差异
至少我们可以解决这几个问题:
1,我们不必非要连接数据线做安卓的自动化测试(感觉演示的时候会很酷...)
2,我们可以更精确的来衡量功耗的使用
3,手机电池寿命更长。。。。哈哈哈
等等,相信还有很多好处。。
再次感谢各位大牛,文采不佳,大家凑合着看。

共收到 33 条回复 时间 点赞

哈哈,有意思。 其实 不管有线无线。 对于 adb server 而言都是一样的。

@lihuazhang
哈哈,确实。。多一种方式,就多一种乐趣啊。

不错,从论坛得到的最后又分享出来,这就是开源精神!

这个大赞~这个就是回馈啊~

这个无线连接, 可以大做文章的, 之前用它做了很多的试验. 如果创建一个 ***, 其实就可以通过无线来控制很多终端了

PC 端要装无线网卡吗?没有的话 ping 不通的吧。

哈哈哈,谢谢大家鼓励,确实很不错的功能。

@htmlbiji 无须 PC 端安装无线网卡,只用保证 PC 和 手机端,在同一个网络即可。
PC 的网段好查看,手机的网段 可以在无线连接里设置。

试验了,已经成功,赞

赞一个,太棒了

@seveniruby Appium 连接 grid 怎么测试 app, 我连接上了可以测试浏览器,但是测试不了 app

这个好顶赞。。

给你 32 个赞

无线连接挺好的,特别是用真机跑时, 但稳定性如何,估计得观察~

豌豆荚,应用宝等手机管理工具的无线连接,也应该和这是一个道理吧

@pajack
稳定性方面,虽然没有长时间测试,但经过这几天的运行情况,在 wifi 稳定的情况下,表现还是很稳定的,和连接数据线无太大的区别。

@xiaomayi0323
感觉和豌豆荚和其它无线连接的方式不是一个套路。
我们起初尝试过用豌豆荚无线连接,可是在 adb devices 里面找不到设备列表,反之用 wireless adb 是可以 通过 它来连接上设备的,可能原理上还是有区别。
希望大牛们指出 异同。

#16 楼 @seasoncool2011
真心不错,我现在也可以跑起来,以后做演示就方便啊

#7 楼 @seasoncool2011 实际上不在一个网段也是可以的,只要在同一个网络里就可以,在我公司只要都在内网上都没问题

好东西,稍后我也尝试下这种方案,谢谢。

具体耗电量的测试方案 是否可以分享一下呢? 我的邮箱 gghappy360@126.com 谢谢!

这个赞,可否分享下耗电量测试方案。403937185@qq.com

@gghappy @mggao
不好意思哈,方案中包含了很多公司产品的信息,这块不能分享给大家。
大概的思路 就是 我们通过模拟用户的常用操作,比如微信,通过发送大量的信息,图片,名片,大 size 的文件,来定位某个模块 消耗的功耗,流量,温度,内存以及 CPU 等等,还有很多指标。

感谢分享,ios 的设备怎么无线连接呢?

真的很赞

adb tcpip 就搞定了,不需 Root。

81—1 回复

adb tcpip 后 通过 adbconnect 时,一直报超时问题

小白 回复

先 adb kill-server 试试

前提:

手机和 PC 能 ping 通

步骤:

1.手机 USB 连 PC

$ adb tcpip 5555

2.拔掉 USB,连接手机的 ip

$adb connect 192.168.xx.xxx 

以上就 ok 了,可以试试 adb deivces,应该能看到了,192.168.xx.xx:5555 的设备。
如果需要恢复使用 USB 方式

$adb usb

这个办法安卓可以,iPhone 手机如果通过 wifi 连接的方式来做呢???

您好,iPhone 手机如果通过 wifi 连接的方式来做呢???

对,iOS 真机如何做呢,我现在实现了用 xcode 在无线环境下,编译运行 app,wda 运行到真机后,启动 appium 提示设备找不到

jie 回复

请问 iPhone 下无线方式解决了吗?

conan 回复

IOS 有无线解决方案么

你好,请问一下,我用无线连接安卓设备后,python+appium 可以启动 app,但是对于模拟操作无法执行,例如 find_element() 查找元素方法等,就无法执行,请问遇到类似情况的么?

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