uiautomator +python 实现安卓自动化
很多人看到这个题目我相信他们可能会说,uiautomator不是java开发的吗?python怎么用呢,其实呢 ,一开始我也是这么想的,看了金阳光老师的视频,也是用java写的,我表示不服,我要科学上网去查查看,结果还真有,感谢国内 贺晓聪大神进行的封装。github地址:https://github.com/xiaocong/uiautomator ,而且给出来了详细的教程,毫不犹豫的给大神点个赞。
安装起来很简单
- pip install uiautomator
我们来看下官方给的第一个小demo
- from uiautomator import device as d
- d.screen.on()
- d(text="Clock").click()
小试一下,用的感觉还不错呢。
需要安装安装sdk 和ANDROID_HOME,并且安卓设备可以通过adb链接,
如果就一个设备导入下面的
- from uiautomator import device as d
如果多个设备需要用
- from uiautomator import Device
- d = Device('014E05DE0F02000E')
- from uiautomator import Device
- d = Device('014E05DE0F02000E', adb_server_host='192.168.1.68', adb_server_port=5037)
下面我们来看下支持的定位方式
- text, textContains, textMatches, textStartsWith
- className, classNameMatches
- description, descriptionContains, descriptionMatches, descriptionStartsWith
- checkable, checked, clickable, longClickable
- scrollable, enabled,focusable, focused, selected
- packageName, packageNameMatches
- resourceId, resourceIdMatches
- index, instance
- 几乎所有的定位方式都支持,比appium支持的定位方式多不少,个人感觉。
有兴趣的可以去看下官方给的api。
下面呢我利用我们公司的app做了一个demo,使用ddt数据驱动,定位方式呢,就使用id。
- from uiautomator import device as d
- import unittest,os,ddt,time
- from uiautomotpr import HTMLTestRunner
- data=[{'username':15964636199,'password':''},{'username':15964636199,'password':'liwanlei'},{'username':15964636199,'password':'liwanlei123'}]
- def assert_i(cm):
- if cm.exists:
- return True
- else:
- return False
- @ddt.ddt
- class TestaixuetangCase(unittest.TestCase):
- def setUp(self):
- cmd = 'adb shell am start com.aixuetang.teacher/.activities.LoginActivity '
- os.system(cmd)
- def tearDown(self):
- cmd='adb shell am force-stop com.aixuetang.teacher'
- os.system(cmd)
- @ddt.data(*data)
- def testlogin(self,data):
- d(resourceId='com.aixuetang.teacher:id/et_username').set_text(data['username'])
- d(resourceId='com.aixuetang.teacher:id/et_password').set_text(data['password'])
- d(resourceId='com.aixuetang.teacher:id/tv_login').click()
- assert_m=assert_i(cm=d(resourceId='com.aixuetang.teacher:id/tv_login'))
- self.assertTrue(assert_m)
- if __name__=='__main__':
- suite = unittest.TestSuite()
- now = time.strftime('%Y-%m%d', time.localtime(time.time()))
- report_dir = r'%s.html' % now
- suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestaixuetangCase))
- re_open = open(report_dir, 'wb')
- runner = HTMLTestRunner.HTMLTestRunner(stream=re_open, title='爱学堂demo by uiautomator', description='测试结果')
- runner.run(suite)
我们来看下运行结果
三个测试用例28秒搞定,速度还算快,更多的应用还在探索中,
- 这里作者只是用了一个小demo, 其实网上还有很多的例子,https://my.oschina.net/yangyanxing/blog/498403 这个例子就不错。
以后继续探索吧,- 欢迎大家可以来和我一起学习,
qq群:194704520 ,欢迎大家可以前来一起来探索美妙的IT人生,探索iT技术的奥妙,扯淡荒废的光阴。- 赠言: 你在休息的时候,别人在进步,你在打闹的时候别人在进步。 不要羡慕别人的成功,因为别人的成功付出了自己汗水。
uiautomator +python 实现安卓自动化的更多相关文章
- uiautomator +python 安卓UI自动化尝试
使用方法基本说明:https://www.cnblogs.com/mliangchen/p/5114149.html,https://blog.csdn.net/Eugene_3972/article ...
- 安卓自动化测试之MonkeyRunner环境的搭建
最近在抽时间学习一些安卓自动化的知识,把学到东西都就记录下来,避免以后记性不好忘记,也方便对自己积累知识的查阅 MonkeyRunner是基于坐标点来操作控件的,你可以通过写python脚本来调用mo ...
- python+request接口自动化框架
python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...
- Python实现浏览器自动化操作
Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼ 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...
- [转载]Python实现浏览器自动化操作
原文地址:Python实现浏览器自动化操作作者:rayment 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...
- appium安卓自动化的 常用driver方法封装
appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...
- appium安卓自动化常见问题处理
appium安卓自动化常见问题处理 1.seesionnotcreatedexception 遇到这个首先确定下jdk需要1.7以上 然后还要确定appium是启动状态,可以cmd重启下appium ...
- Python 开发安卓Android及IOS应用库Kivy安装尝试
Python 开发安卓Android及IOS应用库Kivy安装尝试: 先来看看这货可以用来制作什么应用: Create a package for Windows Create a package f ...
- 从零学习基于Python的RobotFramework自动化
从零学习基于Python的RobotFramework自动化 一. Python基础 1) 版本差异 版本 编码 语法 其他 2.X ASCII try: raise Type ...
随机推荐
- 用window的onload事件,窗体加载完毕的时候
<script type="text/javascript"> //用window的onload事件,窗体加载完毕的时候 window.onload=function( ...
- [leetcode-485-Max Consecutive Ones]
Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...
- 【Android Developers Training】 71. 显示翻牌动画
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Example008关闭IE窗口时,不弹出询问对话框
<!-- 实例008关闭IE主窗口时,不弹出询问对话框 --> <meta charset="UTF-8"> <a href="#" ...
- peoplesoft function PSTREENODE 通过 deptid 获得部门树 全路径 code
create or replace function getUnitFullcode(deptid in varchar) return varchar2 is r ); c int; n ); m ...
- (转载)开源ckplayer 网页播放器, 跨平台(html5, mobile),flv, f4v, mp4, rtmp协议. webm, ogg, m3u8 !
文章链接:http://justcoding.iteye.com/blog/2110275 CKplayer,其全称为超酷flv播放器,它是一款用于网页上播放视频的软件,支持的格式有:http协议上的 ...
- 【No JSON object could be decoded】问题解决
本人使用爬虫从某数据库中下载了一批数据,本地存为json格式(pgp.json)然后使用python中的json模块进行解析(json.load),一直出现下述错误 从google中查找到了同样错误的 ...
- Unreal Engine 4(虚幻UE4) GameplayAbilities插件入门教程(一)
本文系笔者的实习生分享会内容预备兼GameplayAbilities的初学者教程. 本文适合已有四十天UE4开发经验的初学者. 参考资料:https://wiki.unrealengine.com/G ...
- Merge使用
Role r = new Role(); r.setName("TEST"); r.setDescription("123"); r.setLevel(2); ...
- Office365开发系列——开发一个全功能的Word Add-In
2016年10月我参加了在北京举行的DevDays Asia 2016 - Office 365应用开发”48小时黑客马拉松“,我开发的一个Word Add-In Demo——WordTemplate ...