[Android] 基于WLAN无线执行自动化方法

背景:

由于公司要测试APP 产品的耗电问题,我们采取的办法很low,对各个模块功能进行大量的手动测试,再通过Emmagee或GT得出来的结果来评估产品耗电,流量,CPU,内存的消耗等。由于手工效率太低,而且不准确,我们就决定用自动化来实现,但用自动化又面临了一个USB接电脑供电的问题,从而导致计算出来的功耗与手动跑的有很大的误差。

1、将 Android 设备和 adb 主计算机连接到这两者都可以访问的常用 WLAN 网络。
注意,并非所有访问点均适用;可能需要使用已正确配置防火墙的访问点以支持 adb 的访问点。
注:如果您尝试连接到 Android Wear 设备,则通过关闭与其连接的手机的蓝牙强制将它连接到 WLAN。

2、使用 USB 电缆将设备连接到主计算机。

3、设置目标设备以侦听端口 5555 上的 TCP/IP 连接。

didi@localhost  ~  adb devices
List of devices attached
68de2f65 device
 
didi@localhost  ~  adb tcpip 5555
restarting in TCP mode port: 5555

4、从目标设备断开 USB 电缆连接。

5、查找 Android 设备的 IP 地址。例如,在 Nexus 设备上,您可以通过访问 Settings > About tablet(或 About phone) > Status > IP address 查找 IP 地址。或者,在 Android Wear 设备上,您可以通过访问 Settings > Wi-Fi Settings > Advanced > IP address 查找 IP 地址。

6、连接至设备,通过 IP 地址识别此设备。

didi@localhost  ~  adb connect 172.22.139.35
connected to 172.22.139.35:5555

7、请确认您的主计算机已连接至目标设备:

didi@localhost  ~  adb devices
List of devices attached
172.22.139.35:5555 device

8、更改datest - capabilities中手机的udid:

capability="sm_g9300-68de2f65"
capabilities[capability] = {}
capabilities[capability]['platformName'] = 'Android'
capabilities[capability]['platformVersion'] = '7.0'
capabilities[capability]['deviceName'] = '68de2f65'
# capabilities[capability]['udid'] = '68de2f65'
capabilities[capability]['udid'] = '172.22.139.35:5555'
capabilities[capability]['appPackage'] = 'com.sdu.didi.psnger'
capabilities[capability]['appActivity'] = 'com.didi.sdk.app.launch.DidiLoadDexActivity'
capabilities[capability]['noReset'] = 'true'
capabilities[capability]['newCommandTimeout'] = 300
capabilities[capability]['command_executor'] = "http://127.0.0.1:4723/wd/hub"
capabilities[capability]['recreateChromeDriverSessions'] = 'true'
capabilities[capability]['unicodeKeyboard'] = 'true'
capabilities[capability]['automationName'] = "uiautomator2"
# capabilities[capability]['systemPort'] = 8201

现在,可以开始操作了!

PS:
如果 adb 连接丢失:
请确保您的主机仍与您的 Android 设备连接到同一个 WLAN 网络。
通过再次执行 adb connect 步骤重新连接。
如果无法连接,则重置 adb 主机:

didi@localhost  master ●  adb kill-server

然后,从头开始操作。

经测试,脚本运行的速度和有线并无太大的差异,无线启动appium感觉比有线稍微慢,大概在10秒左右,在可以接受范围。

至此,我们已经可以解决这几个问题了:
1、我们不必非要连接数据线做安卓的自动化测试
2、我们可以更精确的来衡量功耗的使用
3、手机电池寿命更长

上一篇:揭秘恐怖组织IS黑客团队 创始人是英国青年


下一篇:[阿里研究院]“互联网+”的动力:云计算、大数据与新分工网络