一、adb 相关命令:

1、关闭adb服务:adb kill-server

2、启动adb服务  adb start-server

3、查询当前运行的所有设备  adb devices

4、可能在adb中存在多个虚拟设备运行 可以指定虚拟设备运行  -s 虚拟设备名称

5、重启设备 adb reboot  --指定虚拟设备   adb -s 设备名称 reboot

6、查看日志  adb logcat  清除日志 adb logcat -c

7、进入linux shell下  adb shell 其中常用的linux命令  cd  cat 等等 输入su可以获取超级管理员名称了 要确定是否有哪些命令 进入 system/bin目录 就知道了

8、传入文件到设备中 adb push 本地文件 远程目录

9、从设备中拷贝文件到本地  adb -s emulator-5556 pull /data/config.ini d:/

10、显示当前运行的全部模拟器:

adb devices

安装应用程序:

adb install -r 123.apk

12、获取模拟器中的文件:

adb pull

13、向模拟器中写文件:

adb push

14、进入模拟器的shell模式:

adb shell

15、卸载apk包:

adb shell

cd data/app

rm 123.apk

exit

adb uninstall 123.apk

adb install -r 123.apk

16、查看adb命令帮助信息:

adb help

17、删除系统应用:

adb remount (重新挂载系统分区,使系统分区重新可写)。

adb shell

cd system/app

rm 123.apk

18、获取管理员权限:

adb root

19、复制文件:

复制一个文件或目录到设备:

adb push

如:adb push update.zip /sdcard/

从设备上复制一个文件或目录:

adb pull

如:adb pull /sdcard/update.zip.

20、取得当前运行设备的实例的列表及每个实例的状态:

adb devices

21、adb shell input tap

这条命令模拟Android手机在屏幕坐标(X,Y)处进行了点击操作。

22、adb shell input swipe

这条命令模拟Android手机从屏幕坐标(X1,Y1)滑动到坐标(X2,Y2)的操作。

23、uiautomator dump   dump: creates an XML dump of current UI hierarchy 这个命令是用来成成当前界面的UI层次,并用XML格式进行展示 。这样就可以获取各个组件的位置了

注:如果PC要想同时控制多台Android手机,必须在adb 后面添加-s

例如:adb -s 13b6e4c4 shell input tap 400 400

表示对13b6e4c4这台Android手机进行在屏幕上(400,400)坐标位置进行模拟的点击事件。

24、能看到设备信息就代表设备已经连接成功了,接下来的命令就是adb install 路径+包名.apk

例如我的安装包放在桌面,那么命令就是adb install C:\Users\hyh\Desktop\XXX.apk

*** adb shell uiautomator dump /mnt/sdcard/window_dump.xml 获得手机当前界面的UI信息,生成window_dump.xml

*** adb shell input text “123” 输入text

举例:

1、打开cmd,进入到当前文件夹中,输入命令 adb devices 查看当前与电脑连接的设备(前提是,手机打开usb调试模式),可以查看已连接成功的手机。

2、若手机成功连接,输入命令 adb shell input tap 100 100 , 表示点击屏幕上坐标为(100,100)的点,如果不知道需要点击的点的具体位置的话可以在手机开发者模式中设置。

二、adb 模拟按键:

1. 比如使用 adb shell input keyevent 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:

2. input 命令的一些用法举例

电源键

命令:adb shell input keyevent 26

执行效果相当于按电源键。

菜单键

命令:adb shell input keyevent 82

HOME 键

命令:adb shell input keyevent 3

返回键

命令:adb shell input keyevent 4

音量控制

增加音量:adb shell input keyevent 24

降低音量:adb shell input keyevent 25

静音:adb shell input keyevent 164

媒体控制

播放/暂停:adb shell input keyevent 85

停止播放:adb shell input keyevent 86

播放下一首:adb shell input keyevent 87

播放上一首:adb shell input keyevent 88

恢复播放:adb shell input keyevent 126

暂停播放:adb shell input keyevent 127

点亮/熄灭屏幕

可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。

点亮屏幕:adb shell input keyevent 224

熄灭屏幕:adb shell input keyevent 223

三、使用python脚本自动运行cmd命令

在adb文件夹下建立一个python文件import os

os.system('adb shell input tap 100 100');

运行脚本,发现与在命令行输入相同语句有同样的效果。

也可以使用subprocess.Popen,最简单使用方式如下,设置shell=True,就不会弹出cmd框process = subprocess.Popen('adb shell input tap 14 1402',shell=True)

程序实例:#coding:utf-8

#程序功能:可以实现抖音个人页面视频的自动点击,从而自动增加访问量

#思路:抖音主页中两个视频切换点击,可以实现访问量的增加

#使用ADB程序,视频的屏幕坐标可以使用adb shell uiautomator dump命令,获取该页面xml源码后查得

#下述是小米MIX2抖音主页第一个视频和第二个视频的坐标位置

#缺点:运行时不能移动屏幕,后续可以采用获取模块ID号的方式去点击相应的位置

import time

import subprocess

i = 0

#每次操作的间隔时间取决于手机配置,配置越高时间越短

sleep_time = 0.5

while 1:

#用popen设置shell=True不会弹出cmd框

process = subprocess.Popen('adb shell input tap 14 1402',shell=True)

time.sleep(sleep_time)

process = subprocess.Popen('adb shell input keyevent KEYCODE_BACK', shell=True)

time.sleep(sleep_time)

process = subprocess.Popen('adb shell input tap 375 1402', shell=True)

time.sleep(sleep_time)

process = subprocess.Popen('adb shell input keyevent KEYCODE_BACK', shell=True)

time.sleep(sleep_time)

#os.system('adb shell input tap 14 1402')

#os.system('adb shell input keyevent KEYCODE_BACK')

#os.system('adb shell input tap 375 1402')

i+=1

print str(i) + 'clicks have been completed'

实现原理

Hierarchy Viewer:获得当前手机实时的UI信息,方便用于手机的自动化测试;

python中的subprocess.Popen() 或 Python os模块:调用系统命令;

uiautomator工具:获取界面控件信息;

adb命令:对手机进行操作;

python 手机测试_python脚本如何测试手机相关推荐

  1. python如何测试仪器_Python中的测试工具

    当我们在写程序的时候,我们需要通过测试来验证程序是否出错或者存在问题,但是,编写大量的测试来确保程序的每个细节都没问题会显得很繁琐.在Python中,我们可以借助一些标准模块来帮助我们自动完成测试过程 ...

  2. python 通讯录系统_Python基础项目:手机通讯录系统

    完成简易手机通讯录管理系统,包括以下功能: 能够循环接收客户端输入的功能编号,并根据编号选择对应的功能操作 用户输入"1"时,执行增加姓名和手机号码的操作 用户输入"2& ...

  3. 安卓脚本用什么写_python脚本控制安卓手机,可以用来做什么你知道吗?

    有的时候想写写安卓的脚本,不过用 java 或者 kotlin 写图像处理什么的太麻烦了,按键精灵的脚本我也懒得学.adb 倒是可以,但是很多时候要用电脑,又有些不太方便.感觉现在云手机比较方便吧,比 ...

  4. python生成测试数据_Python基于Hypothesis测试库生成测试数据

    Hypothesis是Python的一个高级测试库.它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试数据.可以用更少的工作在代码中发现更多的bug. 安装 pip install hyp ...

  5. python绘图苹果_python如何绘制iPhone手机图案?(代码示例)

    本篇文章给大家带来的内容是介绍python如何绘制iPhone手机图案?(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 虽然我用不起苹果手机,但我可以用python画出 ...

  6. python 模拟手机浏览器_python+chrome+Selenium模拟手机浏览器

    环境 安装chrome,F12后有个模拟手机浏览器的功能,如果找不到就自己google下啊 下载chromedriver.exe,并放到python的根目录下 实现代码 不废话,直接码起来~ #引入必 ...

  7. python web验证码_python web框架Flask——手机短信验证码

    下列代码都是以自己的项目实例讲述的,相关的文本内容很少,主要说明全在代码注释中. 我是使用阿里云云通信的短信服务,第一次使用会摸不着头绪,这里我们需要做些准备工作: 1.登陆自己的账号进入阿里云官网, ...

  8. python英语词汇量测试_python英语单词测试小程序

    博主爬取了扇贝英语网,并制作了一个英语单词测试的小程序,还能生成错词本,一起来看下代码吧- import requests #扇贝网爬虫,获取英语单词 category_res=requests.ge ...

  9. python爬取京东手机参数_python爬取京东手机价格

    这里我爬取京东手机价格作为事例 timg.jpg 最近刚出了iPhone X,1W元的价格有点实(guo)惠(fen),刘海也很"漂(chou)亮(lou),所以我还是看看国产手机吧,正好闲 ...

最新文章

  1. 面试官:你能说说MyBatis拦截器原理吗?
  2. 符合标准的TreeView实现(Div+CSS+JS+ASP.NET)
  3. VTK:等参细胞演示用法实战
  4. DXSDK_June10安装错误
  5. java接口自动化测试的搭建_java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)...
  6. dedecms 5.7 站点文件从本地子目录上传到远程根目录后找不到模板的解决方案
  7. 【AICC】2019训练营笔记
  8. SVN提交文件冲突怎么办?
  9. JSON转EXCEL代码( java)
  10. FineReport.10 一(帆软)(报表基础练习)
  11. linux线程 ppt,实验十七Linux下进程线程的创建.ppt
  12. android apk参数错误,Android adb安装apk时出现报错Invalid APK file如何解决
  13. 微信公众号开发之消息模板
  14. css手册.chm + W3CSchool.chm下载
  15. Python 爬虫之初体验(实习僧)
  16. MATLAB|创建指定行列大小行向量/零矩阵/单位阵含测试用例
  17. JetBrains提示“No suitable licenses associated with account ”
  18. D - Six Degrees of Cowvin Bacon(最小路径)
  19. 特征工程-什么是特征工程(Kaggle微课)
  20. Unity3D游戏开发之当游戏开发遇上Excel

热门文章

  1. 多媒体调度系统如何实现对水库大坝的防洪调度
  2. 【转】无法登陆SQL server 服务器的解决办法
  3. 解决svn中文乱码的问题
  4. javaweb学习总结(二十一)——JavaWeb的两种开发模式
  5. IIS处理并发请求时出现的问题及解决
  6. Flex开源开发框架
  7. Android 读取文件内容
  8. OO开发思想:面向对象的开发方法(Object oriented,OO)
  9. ASP.NET页面对象模型:Page类介绍
  10. com.alibaba.fastjson.JSONObject之对象与JSON转换方法