一.简介

我们都知道在做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)
参数 显示列表
-f 显示应用关联的 apk 文件
-d 只显示 disabled 的应用
-e 只显示 enabled 的应用
-s 只显示系统应用
-3 只显示第三方应用
-i 显示应用的 installer
-u 包含已卸载应用
无参数 所有应用

模糊过滤

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码可百度搜索)

含义 keycode
24 增加音量
25 减少音量
26 电源键
224 点亮屏幕
223 息屏
64 打开浏览器
4 返回键
208 打开日历

要是涉及到长按的话,比如长按电源键,可以加个--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自动化(这一篇就够了)的更多相关文章

  1. Android UI开发第二十七篇——实现左右划出菜单

    年前就想写左右滑动菜单,苦于没有时间,一直拖到现在,这篇代码实现参考了网上流行的SlidingMenu,使用的FrameLayout布局,不是扩展的HorizontalScrollView. 程序中自 ...

  2. 【Android测试】UI自动化代码优化之路(临时发布, 随时删除)

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5993622.html 关于UI自动化的抱怨 听过不少人这样 ...

  3. 【Android测试】UI自动化代码优化之路

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5993622.html 关于UI自动化的抱怨 听过不少人这样 ...

  4. Airtest 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架同时也支持原生Android App 的基于元素识别的UI自动化测试.本文主要使用目 ...

  5. 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使 ...

  6. Android UI开发第三十篇——使用Fragment构建灵活的桌面

    http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...

  7. Android UI开发第二十八篇——Fragment中使用左右滑动菜单

    Fragment实现了Android UI的分片管理,尤其在平板开发中,好处多多.这一篇将借助Android UI开发第二十六篇——Fragment间的通信. Android UI开发第二十七篇——实 ...

  8. 使用uiautomatorviewer和uiautomator来做android的UI测试

    来自:http://university.utest.com    作者:Angelos Nakulas (All Authored Courses)      译者:Elaine00 目录 简介 什 ...

  9. 小心!做 UI 自动化一定要跨过这些坑

    一 .引子 UI自动化,在移动互联网时代的今天,一直都是在各大测试社区最为火爆的一个TOPIC.甚至在测试同行面前一提起自动化,大家就会自然而然的问:“恩,你们是用的什么框架?appium?还是rob ...

  10. 使用appium+python做UI自动化的demo

    使用appium+python做UI自动化的demo 案例使用的知乎app,下载最新的知乎apk,存在了电脑上,只需要配置本机上app目录,不需要再配置appPackage和appActivity # ...

随机推荐

  1. 虚拟内存与malloc/new原理详解

    malloc malloc()函数并不是系统调用,而是 C 库里的函数,用于动态分配内存.malloc() 分配的是虚拟内存,而不是物理内存.如果分配后的虚拟内存没有被访问的话,是不会将虚拟内存映射到 ...

  2. ping功能实现(ICMP)

    简单记录下项目中ping功能实现 笔记:ping功能实现 void Handler::handlePingDepot(const char *ip) { int mSize=50*1024; bzer ...

  3. 如何在 🤗 Space 上托管 Unity 游戏

    你知道吗?Hugging Face Space 可以托管自己开发的 Unity 游戏!惊不惊喜,意不意外?来了解一下吧! Hugging Face Space 是一个能够以简单的方式来构建.托管和分享 ...

  4. Docker compose单机编排工具

    Docker compose单机编排工具 目录 Docker compose单机编排工具 docker-compose介绍 Docker Compose使用的三步: docker-compose安装部 ...

  5. docker(一):Develop faster. Run anywhere.

    前言 在进行微服务部署时,首先需要进行部署环境的搭建.目前,Docker 已经成为了微服务部署的主流解决方案之一.Docker 可以帮助我们更快地打包.测试以及部署应用程序,从而缩短从编写到部署运行代 ...

  6. 2020-09-02:Sqoop的工作原理?

    福哥答案2020-09-02: [答案来自此链接](https://www.kaops.com/ivquest/104670)下图显示了Sqoop的工作流程: Sqoop导入导入工具将单个表从RDBM ...

  7. 2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多少张贴纸可以完成这个任务。例子:str= "babac",arr = {"ba","c","abcd"}。a + ba + c 3 abcd + abcd 2 abcd+ba 2。所以返回2。

    2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文.arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来.返回需要至少多少张贴 ...

  8. ET介绍——CSharp协程

    什么是协程 说到协程,我们先了解什么是异步,异步简单说来就是,我要发起一个调用,但是这个被调用方(可能是其它线程,也可能是IO)出结果需要一段时间,我不想让这个调用阻塞住调用方的整个线程,因此传给被调 ...

  9. 自学FHQ-treap的草稿

    更新:能过模板题(和加强版)的代码: 普通平衡树: (请自行实现读入和输出函数) 点击查看代码 #include <iostream> #include <random> #i ...

  10. UpSetR 高级参数使用教程

    在<UpSetR:多数据集绘图可视化处理利器>中我们介绍了 UpSetR 的一些概念和绘图基础参数使用,今天我们来学习一下 UpSetR 的 queries 和 attribute.plo ...