很多人看到这个题目我相信他们可能会说,uiautomator不是java开发的吗?python怎么用呢,其实呢 ,一开始我也是这么想的,看了金阳光老师的视频,也是用java写的,我表示不服,我要科学上网去查查看,结果还真有,感谢国内 贺晓聪大神进行的封装。github地址:https://github.com/xiaocong/uiautomator ,而且给出来了详细的教程,毫不犹豫的给大神点个赞。

  安装起来很简单

  1. pip install uiautomator

我们来看下官方给的第一个小demo

  1. from uiautomator import device as d
  2. d.screen.on()
  3. d(text="Clock").click()

小试一下,用的感觉还不错呢。

需要安装安装sdk 和ANDROID_HOME,并且安卓设备可以通过adb链接,

如果就一个设备导入下面的

  1. from uiautomator import device as d
    如果多个设备需要用
  1. from uiautomator import Device
  2.  
  3. d = Device('014E05DE0F02000E')
  1. from uiautomator import Device
  2.  
  3. d = Device('014E05DE0F02000E', adb_server_host='192.168.1.68', adb_server_port=5037)

下面我们来看下支持的定位方式

  1. text, textContains, textMatches, textStartsWith
  2. className, classNameMatches
  3. description, descriptionContains, descriptionMatches, descriptionStartsWith
  4. checkable, checked, clickable, longClickable
  5. scrollable, enabled,focusable, focused, selected
  6. packageName, packageNameMatches
  7. resourceId, resourceIdMatches
  8. index, instance
  1. 几乎所有的定位方式都支持,比appium支持的定位方式多不少,个人感觉。
    有兴趣的可以去看下官方给的api
    下面呢我利用我们公司的app做了一个demo,使用ddt数据驱动,定位方式呢,就使用id
  1. from uiautomator import device as d
  2. import unittest,os,ddt,time
  3. from uiautomotpr import HTMLTestRunner
  4. data=[{'username':15964636199,'password':''},{'username':15964636199,'password':'liwanlei'},{'username':15964636199,'password':'liwanlei123'}]
  5. def assert_i(cm):
  6. if cm.exists:
  7. return True
  8. else:
  9. return False
  10. @ddt.ddt
  11. class TestaixuetangCase(unittest.TestCase):
  12. def setUp(self):
  13. cmd = 'adb shell am start com.aixuetang.teacher/.activities.LoginActivity '
  14. os.system(cmd)
  15. def tearDown(self):
  16. cmd='adb shell am force-stop com.aixuetang.teacher'
  17. os.system(cmd)
  18. @ddt.data(*data)
  19. def testlogin(self,data):
  20. d(resourceId='com.aixuetang.teacher:id/et_username').set_text(data['username'])
  21. d(resourceId='com.aixuetang.teacher:id/et_password').set_text(data['password'])
  22. d(resourceId='com.aixuetang.teacher:id/tv_login').click()
  23. assert_m=assert_i(cm=d(resourceId='com.aixuetang.teacher:id/tv_login'))
  24. self.assertTrue(assert_m)
  25. if __name__=='__main__':
  26. suite = unittest.TestSuite()
  27. now = time.strftime('%Y-%m%d', time.localtime(time.time()))
  28. report_dir = r'%s.html' % now
  29. suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestaixuetangCase))
  30. re_open = open(report_dir, 'wb')
  31. runner = HTMLTestRunner.HTMLTestRunner(stream=re_open, title='爱学堂demo by uiautomator', description='测试结果')
  32. runner.run(suite)

我们来看下运行结果

三个测试用例28秒搞定,速度还算快,更多的应用还在探索中,

  1.  这里作者只是用了一个小demo 其实网上还有很多的例子,https://my.oschina.net/yangyanxing/blog/498403 这个例子就不错。
    以后继续探索吧,
  2.  
  3. 欢迎大家可以来和我一起学习,
    qq群:194704520 ,欢迎大家可以前来一起来探索美妙的IT人生,探索iT技术的奥妙,扯淡荒废的光阴。
  4.  
  5. 赠言: 你在休息的时候,别人在进步,你在打闹的时候别人在进步。 不要羡慕别人的成功,因为别人的成功付出了自己汗水
  6.  

 

  1.  

uiautomator +python 实现安卓自动化的更多相关文章

  1. uiautomator +python 安卓UI自动化尝试

    使用方法基本说明:https://www.cnblogs.com/mliangchen/p/5114149.html,https://blog.csdn.net/Eugene_3972/article ...

  2. 安卓自动化测试之MonkeyRunner环境的搭建

    最近在抽时间学习一些安卓自动化的知识,把学到东西都就记录下来,避免以后记性不好忘记,也方便对自己积累知识的查阅 MonkeyRunner是基于坐标点来操作控件的,你可以通过写python脚本来调用mo ...

  3. python+request接口自动化框架

    python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...

  4. Python实现浏览器自动化操作

    Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼     最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...

  5. [转载]Python实现浏览器自动化操作

    原文地址:Python实现浏览器自动化操作作者:rayment   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...

  6. appium安卓自动化的 常用driver方法封装

    appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...

  7. appium安卓自动化常见问题处理

    appium安卓自动化常见问题处理 1.seesionnotcreatedexception 遇到这个首先确定下jdk需要1.7以上 然后还要确定appium是启动状态,可以cmd重启下appium ...

  8. Python 开发安卓Android及IOS应用库Kivy安装尝试

    Python 开发安卓Android及IOS应用库Kivy安装尝试: 先来看看这货可以用来制作什么应用: Create a package for Windows Create a package f ...

  9. 从零学习基于Python的RobotFramework自动化

    从零学习基于Python的RobotFramework自动化 一.        Python基础 1)      版本差异 版本 编码 语法 其他 2.X ASCII try: raise Type ...

随机推荐

  1. 用window的onload事件,窗体加载完毕的时候

    <script type="text/javascript"> //用window的onload事件,窗体加载完毕的时候 window.onload=function( ...

  2. [leetcode-485-Max Consecutive Ones]

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  3. 【Android Developers Training】 71. 显示翻牌动画

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. Example008关闭IE窗口时,不弹出询问对话框

    <!-- 实例008关闭IE主窗口时,不弹出询问对话框 --> <meta charset="UTF-8"> <a href="#" ...

  5. peoplesoft function PSTREENODE 通过 deptid 获得部门树 全路径 code

    create or replace function getUnitFullcode(deptid in varchar) return varchar2 is r ); c int; n ); m ...

  6. (转载)开源ckplayer 网页播放器, 跨平台(html5, mobile),flv, f4v, mp4, rtmp协议. webm, ogg, m3u8 !

    文章链接:http://justcoding.iteye.com/blog/2110275 CKplayer,其全称为超酷flv播放器,它是一款用于网页上播放视频的软件,支持的格式有:http协议上的 ...

  7. 【No JSON object could be decoded】问题解决

    本人使用爬虫从某数据库中下载了一批数据,本地存为json格式(pgp.json)然后使用python中的json模块进行解析(json.load),一直出现下述错误 从google中查找到了同样错误的 ...

  8. Unreal Engine 4(虚幻UE4) GameplayAbilities插件入门教程(一)

    本文系笔者的实习生分享会内容预备兼GameplayAbilities的初学者教程. 本文适合已有四十天UE4开发经验的初学者. 参考资料:https://wiki.unrealengine.com/G ...

  9. Merge使用

    Role r = new Role(); r.setName("TEST"); r.setDescription("123"); r.setLevel(2); ...

  10. Office365开发系列——开发一个全功能的Word Add-In

    2016年10月我参加了在北京举行的DevDays Asia 2016 - Office 365应用开发”48小时黑客马拉松“,我开发的一个Word Add-In Demo——WordTemplate ...