Python之使用adb shell命令启动应用的方法详解


Posted in Python onJanuary 07, 2019

一直有一个心愿希望可以用Python做安卓自动化功能测试,在一步步摸索中,之前是用monkeyrunner,但是发现对于控件ID的使用非常具有局限性,尤其是ID的内容不便于区分

具有重复性时,后面又发现Uiautomator可以对resorceId、text、packageName等元素进行定位,也找到了xiaochong这位大神关于uiautomator的封装包,链接如下:

https://github.com/xiaocong/uiautomator

做为一个小白,这一切都需要摸索,在克服了安装uiautormator封装包的问题后,又卡在启动应用这个问题上,之前使用monkeyrunner时启动应用使用的是如下代码:

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage

package = 'com.android.settings'

activity = '/.Settings'

runcomponent = package + activity

device.startActivity(component = runcomponent)

也是我无知,尝试了很久,终于找到了adb shell am start 包名/Activity启动,以设置应用为例,代码如下

import os

os.system(“adb shell am start -n com.android.settings/.Settings”)

运行结果如下:

Starting: Intent { cmp=com.android.settings/.Settings }
0

成功进入设置应用界面,接下来可以尝试其它你想做的操作了

当然这只是解决了我在PC上运行的问题,在查找问题时有留意到uiautomator最终是要编译成jar文件是要放到android里面的虚拟环境去执行命令,但是android内部并没有adb

环境,所以adb命令会失败,必须得找到能够在android也可以运行的方法

以此做个备忘,希望自己可以在这条路上走得越来越远。

以上这篇Python之使用adb shell命令启动应用的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python复制文件的方法实例详解
May 22 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
python制作一个桌面便签软件
Aug 09 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
简单了解python反射机制的一些知识
Jul 13 Python
Python3常见函数range()用法详解
Dec 30 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
python 对多个csv文件分别进行处理的方法
Jan 07 #Python
python 同时运行多个程序的实例
Jan 07 #Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 #Python
在python中使用with打开多个文件的方法
Jan 07 #Python
python读取文件名并改名字的实例
Jan 07 #Python
Python 调用 zabbix api的方法示例
Jan 06 #Python
使用Django2快速开发Web项目的详细步骤
Jan 06 #Python
You might like
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
package.json文件配置详解
2017/06/15 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
分析Python中解析构建数据知识
2018/01/20 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
酒店中秋节促销方案
2014/01/30 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
小学校园广播稿
2015/08/18 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python