python学习之——调用adb命令完成移动端界面测试
实现原理
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命令完成移动端界面测试的更多相关文章
- 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)
如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...
- python调用adb命令进行手机操作
Python中执行cmd命令可以用到os和subprocess两个模块. 区别在于os是阻塞式的,subprocess是非阻塞式的,所以一般我们使用subprocess是比较适合的. 接下来我先举一个 ...
- python学习第二天:命令行模式和python交互模式
命令行模式 安装完python开发环境和工具之后,在Windows开始菜单选择"命令提示符",就会进入到命令行模式: 或者都可以,然后 点击enter键,弹出下图中的窗口,即命令行 ...
- Python中如何调用Linux命令
一.使用os模块 In [1]: import os #导入os模块 In [2]: os.system('ls') anaconda-ks.cfg epel-release-7-5.noarch.r ...
- python学习:调用其他函数
vim wc.py #!/usr/bin/python def wordCount(s): chars = len(s) words = len(s.split()) ...
- Mac下用java代码调用adb命令时出错
原本我直接这样写: Process process=Runtime.getRuntime().exec("adb devices"); 但是运行时出错: java.io.IOExc ...
- python 利用subprocess调用cmd命令程序,并正确输出控制台的输出中文
平台Python3.7 1.利用控制台运行程序后在控制台会输出中文提示,但是用python调用subprocess.run函数后返回的输出是乱码,于是,解决方法是用subprocess.check_o ...
- android学习笔记31——ADB命令
使用Adb shell command直接送key event給Androidadb shell input keyevent 7 # for key '0'adb shell input keyev ...
- 【学习笔记】adb命令
1.adb connect 连接设备 如:adb connect 127.0.0.1:62001 连接夜神模拟器\adb connect 127.0.0.1:21503 链接逍遥模拟器 adb con ...
随机推荐
- md5算法
md5算法 不可逆的:原文-->密文.用系统的API可以实现: 123456 ---密文 1987 ----密文: 算法步骤: 1.用每个byte去和11111111做与运算并且得到的是int类 ...
- nginx相关的一些记录
http redirect to https: if ($http_cf_visitor ~ '"scheme":"http"'){ rewrite ^/(.* ...
- Hibernate中的数据库方言(Dialect)
在配置hibernate.cfg.xml时需指定使用数据库的方言: 例: <property name="dialect">org.hibernate.dialect. ...
- Spring boot开发过程遇到的一些小问题
1.无法将yml文件自动注入到对应的类的实例中去: pom.xml文件里没有加如下依赖 <dependency> <groupId>org.springframework.bo ...
- ApexSQLLog总结
我们程序最近做更新,要做新功能的测试.程序经常出现大的事务,每次commit之后如果发现数据不对的问题也不能再回滚进行断点调试了,因为数据库数据已经更改了,所以一直想找一个回滚我数据库所有操作的工具. ...
- Request Entity Too Large for Self Hosted ASP.Net Web API在Selfhost的api后台怎么解决Request Entity Too Large问题
Request Entity Too Large for Self Hosted ASP.Net Web API在Selfhost的api后台怎么解决Request Entity Too Large问 ...
- jquery ajax get /post
$.get(URL,callback); $("button").click(function(){ $.get("demo_test.asp",functio ...
- 自动化测试第一季-selenium + python(环境搭建与基础代码解释)
# coding = utf-8 %%%%%%%%%%%%%%%%防止乱码(可加可不加) from selenium import webdriver ...
- delphi中midas是什么
Delphi中MIDAS到底是什么呢?和他相关组件是什么呢? MIDAS(Multitiered Distributed Application Services)多层分布式应用服务. Del ...
- MFC 获取图像的大小
// 获致图像的大小 int CCImageDialog::GetImageSize(CSize& size, CString filename) { CImage image; image. ...