实现原理

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

python中的subprocess.Popen():调用系统命令;

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

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

测试环境

1、HierarchyViewer将把下一台Android设备的4939端口映射到PC的4939端口

adb devices  查看手机设备号

adb -s 手机设备号 forward tcp:4939 tcp:4939

2、判断手机是否开启了view server,如果没开启则开启

adb -s 手机设备号 shell service call window 3

通过返回值查看

"Result: Parcel(00000000 00000000 '........')  --没开

"Result: Parcel(00000000 00000001 '........')  --开启

开启view server

adb -s 手机设备号 shell service call window 1 i32 4939

关闭 view server

adb -s 手机设备号 shell service call window 2 i32 4939

说明:只有模拟器或者root手机才可以开启view service,实际操作过程中发现root手机开启view service 并非命令可完成,故先行使用模拟器进行测试

3、关键adb命令

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

adb shell input keyevent  21  模拟键盘操作

adb shell input text “123”  输入text

......

python学习之——调用adb命令完成移动端界面测试的更多相关文章

  1. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  2. python调用adb命令进行手机操作

    Python中执行cmd命令可以用到os和subprocess两个模块. 区别在于os是阻塞式的,subprocess是非阻塞式的,所以一般我们使用subprocess是比较适合的. 接下来我先举一个 ...

  3. python学习第二天:命令行模式和python交互模式

    命令行模式 安装完python开发环境和工具之后,在Windows开始菜单选择"命令提示符",就会进入到命令行模式: 或者都可以,然后 点击enter键,弹出下图中的窗口,即命令行 ...

  4. Python中如何调用Linux命令

    一.使用os模块 In [1]: import os #导入os模块 In [2]: os.system('ls') anaconda-ks.cfg epel-release-7-5.noarch.r ...

  5. python学习:调用其他函数

    vim wc.py   #!/usr/bin/python   def wordCount(s):     chars = len(s)     words = len(s.split())     ...

  6. Mac下用java代码调用adb命令时出错

    原本我直接这样写: Process process=Runtime.getRuntime().exec("adb devices"); 但是运行时出错: java.io.IOExc ...

  7. python 利用subprocess调用cmd命令程序,并正确输出控制台的输出中文

    平台Python3.7 1.利用控制台运行程序后在控制台会输出中文提示,但是用python调用subprocess.run函数后返回的输出是乱码,于是,解决方法是用subprocess.check_o ...

  8. android学习笔记31——ADB命令

    使用Adb shell command直接送key event給Androidadb shell input keyevent 7 # for key '0'adb shell input keyev ...

  9. 【学习笔记】adb命令

    1.adb connect 连接设备 如:adb connect 127.0.0.1:62001 连接夜神模拟器\adb connect 127.0.0.1:21503 链接逍遥模拟器 adb con ...

随机推荐

  1. 学习总结——Selenium元素定位

    读一本好书,不能读读就算了,做一下总结,变成自己的,以备查阅. 1.         driver.findElement(By.id(<element ID>)) ID是独一无二的,使用 ...

  2. MongoDB(八)Mongodb——GridFS存储

    mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoD ...

  3. cs11_adventure c++_lab1

    exercise1.cc #include <iostream> #include <vector> #include <stdlib.h> #include &l ...

  4. 控制input框不能更改里面的内容

    <input type="text" disabled="true"/> 这个是给input设置一个属性.控制它可以不能改变里面的内容.已经试过了! ...

  5. Ngnix反向代理react-router配置问题解决方法

    项目以react router实现,用ngnix做反向代理的时候出现404找不到页面,有两种解决方法. 第一种  将<Route path="*" component={No ...

  6. Django 之Model(ORM)

    app01.models.py中写类 python manage.py makemigrations python manage.py migrate python3 manage.py create ...

  7. KBMMW 4.93.00 发布

    可喜可敬,作者非常勤奋,跟上了delphi 10.1 的步伐. 4.93.00 April 26 2016 Important notes (changes that may break existi ...

  8. eclipse技巧,快捷键

    快捷键: ctrl + 1,快速修复 ctrl + d, 快捷删除行 shift + Enter,快速移动光标到下一行 ctrl + F11,运行代码 alt + ↑/↓,快速移动行 ctrl + a ...

  9. 性能测试总结工作总结-基于WebService协议脚本 内置函数手动编写

    LoadRunner基于WebService协议脚本 WebService协议脚本有三种生成方式,一种是直接通过LoadRunner导入URL自动解析生成:一种是使用LoadRunner内置函数手动编 ...

  10. linux 学习15 16 启动管理,备份和恢复

    第十五讲 启动管理 . CentOS .x 启动管理 //此处指6.3 系统运行级别 .运行级别 运行级别 含 义 关机 单用户模式,可以想象为windows的安全模式,主要用于系统修复 //linu ...