傻姑娘家的李先生

傻姑娘家的李先生

一.简介

我们都知道在做Android ui自动化的时候用的是appium,环境搭建贼难受。如果我们在工作中遇到需要实现简单的自动化功能,可以直接使用adb来完成,无需去搭建繁琐的appium。ADB(Android Debug Bridge)是一个用于在Android设备和计算机之间传输数据、安装应用程序、调试和测试Android应用程序的命令行工具。本章主要介绍做自动化的时候常用指令。

二.常用指令

1.获取设备分辨率

adb shell wm size

2.指定端口

adb -P <port> start-server

3.查询应用列表

adb shell pm list packages    # 多个参数表示且的关系(adb shell pm list packages -3 -e)

模糊过滤

pm list packages  -3 |grep bilibili        #  模糊过滤(win电脑用find ,查询关键字双引号起来)

4.查看安装包信息

adb shell dumpsys package 包名

5.查看安装路径

adb shell pm path 包名

 6.模拟键盘操作

adb shell input keyevent  keycode

这里就列几个常见的有意思的keycode码(其它code码可百度搜索)

要是涉及到长按的话,比如长按电源键,可以加个--longpress

adb shell input keyevent --longpress 26

7.滑动

语法:adb shell input swipe <起点x坐标> <起点y坐标> <结束点x坐标> <结束点y坐标> [滑动时间(ms)]

adb shell input swipe 300 1500 300 100 10000  # 从(300,1500)坐标滑动到(300,100)位置,历时10s

8.点击事件

语法:adb shell input tap x y

adb shell input tap 380 1214

获取元素坐标:打开开发者选项>打开指针位置

9.打电话

adb shell am start -a android.intent.action.CALL -d tel:136   # 打电话给136

10.输入内容

输入数字和英文

adb shell input text 123AADcefe

输入中文

1)下载adbkeyboard_2.apk ,下载地址:http://www.xlhs.com/app/27253.html
2)安装到安卓手机上:adb install  apk地址
3)系统管理》输入法》勾选ADB keyboard后,选择ADB keyboard为默认输入法
4)执行adb广播输入:我是帅哥

adb shell am broadcast -a ADB_INPUT_TEXT --es msg 我是帅哥

输入特殊字符

adb shell input text " !@#$%^&*()"

用引号引起来,且前面要多出一个空格

11.截屏

adb exec-out screencap -p > sc.png   # 截取手机屏保存到电脑上,sc.png

12.录屏

adb shell screenrecord /sdcard/filename.mp4  # 录制视频保存到相册

默认录制时长和最长录制时长为180s,ctrl+c可停止录制

13.wifi控制(可用于断网测试)

adb shell svc wifi enable   # 打开wifi
adb shell svc wifi disable   # 关闭wifi

三.无线连接设备

测试多台设备时,都用数据线连接实在麻烦,下面是利用wifi连续设备,从此抛弃了有线连接。

1)确保手机与电脑连接同一个局域网

2)打开运行usb调试开关

3)先用数据线使电脑与手机相连:adb devices

4)设置端口:adb tcpip 6666

5)获取手机ip地址后输入:adb connect ip:6666

四.sendevent用法

 sendevent可以用来操作复杂的自动化场景,下面以一个简单的长按电源键为例来介绍下sendevent的用法

1.dos窗口输入:adb shell getevent

2.手机操作设备长按电源键,会得到如下四组数据

/dev/input/event0: 0001 0074 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0074 00000000
/dev/input/event0: 0000 0000 00000000

每组数据分别对应的是:设备名称  type  code  value(getevent打印出来的都是16进制的,因此需要转成10进制使用)

import os
import time

os.system("adb shell sendevent /dev/input/event0 1 116 1")
os.system("adb shell sendevent /dev/input/event0 0 0 0")
time.sleep(3)
os.system("adb shell sendevent /dev/input/event0 1 116 0")
os.system("adb shell sendevent /dev/input/event0 0 0 0")

五.执行adb命令

1.DOS窗口

这个就不用多介绍了,直播win+r搜索cmd打开即可

2.python  os模块

1)直接用os.system()运行adb命令

os.system("adb shell input text 123")

这种写的坏处就是太繁琐,每个命令都要写一个os.system

2)编写bat文件

①首先我们在win电脑创建一个bat.txt文件,编写内容输入:adb shell input text 123

②之后把文件后缀改成bat类型的:bat.bat

③在python中执行bat文件

os.system("C:/Users/user/Desktop/bat.bat")

④bat其它命令

命令行隐藏/打印命令

@echo off   # 运行bat文件时,在命令行隐藏指令,on时显示指令
adb shell input text 123
echo helloworld   # 打印
@echo on
adb shell input text 456

停止当前命令,按任意键继续

pause  # 当前命令停止,按任意键继续运行

等待

timeout  /t 10  # 等待10s,按任意键结束等待。等待时长(-1,99999),-1s时无限等待
timeout /t 10 /nobreak  # 加上nobreak时,表示只有按ctrl+c才可以提前结束等待

循环

见:https://www.cnblogs.com/lihongtaoya/p/15084378.html

⑤实例

@echo off
timeout  /t 5
echo helloworld
adb shell input text helloworld
@echo on
timeout /t 2 /nobreak
adb shell input text 456
pause

以上命令刚开始隐藏命令,等待5s后打印helloworld,并用adb在输入框输入helloworld,然后开始显示命令,等待两分钟后输入456,最后按任意键结束。

adb如何做Android ui自动化(这一篇就够了)-LMLPHP

07-17 14:58