一.简介

我们都知道在做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. RDIFramework.NET代码生成器全新V5.1版本发布

    RDIFramework.NET代码生成器介绍 RDIFramework.NET代码生成器,代码.文档一键生成. RDIFramework.NET代码生成器集代码生成.各数据库对象文档生成.数据库常用 ...

  2. 探究公众号接口漏洞:从后台登录口到旁站getshell

    探究公众号接口漏洞:从后台登录口到旁站getshell 1.入口 发现与利用公众号接口安全漏洞 某120公众号提供了一处考核平台,通过浏览器处打开该网站. 打开可以看到一处密码登录口,试了一下常用的手 ...

  3. Java中方法的定义和使用

    方法的定义和使用 注意事项: 1.方法与方法之间是 平级关系 不可以嵌套定义 2.方法的位置 可以在类{}中任意位置 3.方法定义之后 之后被调用 才能被执行 4.return 关键字的作用  返回关 ...

  4. Centos7.x 安装配置jdk与jmeter

    一.准备 1.jmeter(下载地址:https://jmeter.apache.org/download_jmeter.cgi) 2.jdk(下载地址:https://www.oracle.com/ ...

  5. 2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。

    2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能. 答案2023-04-30: resampling_audio.c 是 FFmpe ...

  6. 2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i] == 0表示str中i位置的字符不许修改, arr[i] ==

    2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0.1组成的数组arr,长度为N, arr[i]等于 0 表示str中i位置的字符不许修改, arr[i] 等于 ...

  7. 2020-09-06:Docker的命名空间有哪些?

    福哥答案2020-09-06: 福哥口诀法:命进I网挂U用 1.进程命名空间.CLONE_NEWPID.进程编号. 2.IPC 命名空间.CLONE_NEWPIPC.信号量.消息队列何共享内存. 3. ...

  8. 2021-01-01:https加解密机制,你了解多少?

    福哥答案2021-01-01:这道题是我被大厂面试的题,但网上的答案太多了,故直接引用. HTTPS(全称:Hyper Text Transfer Protocol over Secure Socke ...

  9. 2021-06-04:给定三个参数:二叉树的头节点head,树上某个节点target,正数K,从target开始,可以向上走或者向下走。返回与target的距离是K的所有节点。

    2021-06-04:给定三个参数:二叉树的头节点head,树上某个节点target,正数K,从target开始,可以向上走或者向下走.返回与target的距离是K的所有节点. 福大大 答案2021- ...

  10. OpenAI 官宣首个 ChatGPT iOS 应用

    最近,OpenAI 宣布推出官方 iOS 应用,允许用户随时随地访问其高人气 AI 聊天机器人,此举也打破了近几个月内苹果 App Store 上充斥似是而非的山寨服务的窘境. 该应用程序是 Chat ...