Python + Android + Uiautomator自动化测试
来源:互联网 发布:php 转整数 编辑:程序博客网 时间:2024/05/12 00:54
1.首先来介绍下uiautomator工具
UIAutomator是Android官方推出的安卓应用界面自动化测试工具,是最理想的针对APK进行自动化功能回归测试的利器。
2.uiautomator测试环境搭建
2.1 在pypi.python.org网站下载uiautomator压缩包,解压后python setup.py install安装;或者直接pip install uiautomator
2.2对于uiautomator工具而已,adb是必不可少的,adb提供的adb shell可实现Android的远程操作,安装好adb,adb device可查看USB连接的手机设备,安装adb建议直接安装91手机助手,91手机助手会自动帮你安装adb,
介绍UIAutomator测试框架的UI工具:uiautomatorviewer 如下图:
uiautomatorviewer位于sdk/tools目录下,可以扫描、分析待测试应用界面,分析结果可以导出为xml与截图。通过该工具可以分析出UI控件的id,text,focusable等等各种属性,甚至布局上的层次关系。
可以通过./uiautomatorviewer启动该工具。
3.uiautomator工具的使用
先上一个小Demo代码:
# -*- coding:utf-8 -*-from uiautomator import device as dimport timeimport sysimport randomimport unittestimport HTMLTestRunnerreload(sys)sys.setdefaultencoding("utf-8")class My_Test_Suite(unittest.TestCase): def setUp(self): try: d.press.home() d(text="***").click() time.sleep(2) if d(text="我的").exists: d(text="我的").click() d(text="注销").click() d(text="确定").click() if d(text="登录").exists: d(resourceId="com.isentech.attendance:id/title_back").click() else: time.sleep(3) print u"开启APP" except Exception, e: print u"Error: 开启APP失败\n", e # 测试注册 def test_reg(self): try: d(text="注册").click() # 测试已注册手机号 d(text="请输入手机号码").set_text("1313384****") d(text="获取验证码").click() # 测试注册 d(text="请输入手机号码").set_text(phone_number) d(text="请输入验证码").set_text("8888") d(resourceId="com.isentech.attendance:id/regis_pass").set_text("123456") d(resourceId="com.isentech.attendance:id/regis_passAgain").set_text("123456") d(text="注册").click() time.sleep(2) if d(text="立刻去登录").exists: d(text="立刻去登录").click() d(resourceId="com.isentech.attendance:id/txtLoginPassword").set_text("123456") d(text="登录").click() except Exception, e: print u"Error: 注册失败\n", e # 测试登陆 def test_login(self, phone): try: d(text="登录").click() d(resourceId="com.isentech.attendance:id/txtLoginUserName").clear_text() d(resourceId="com.isentech.attendance:id/txtLoginUserName").set_text(phone) d(resourceId="com.isentech.attendance:id/txtLoginPassword").set_text("123456") d(text="登录").click() d(text="请输入您的姓名").set_text("123456") d(text="完成").click() time.sleep(2) if d(text="签到").exists: print u"登录成功" except Exception, e: print u"Error: 登录失败\n", e # 测试忘记密码 def test_forget_password(self): try: pass # 一些测试步骤 except Exception, e: print u"Error: 重置密码or修改密码失败\n", e #......更多的测试模块用例 def tearDown(self): try: d.press.home() d.press.recent() time.sleep(3) d.swipe(200, 500, 200, 0, steps=10) d.press.home() print u"关闭APP" except Exception, e: print u"Error: 关闭APP失败\n", eif __name__ == "__main__": phone_number = random.choice(['139', '188', '185', '136', '158', '151'])+"".join(random.choice("0123456789") for i in range(8)) test_unit = unittest.TestSuite() test_unit.addTest(My_Test_Suite("test_reg")) filename = './Result_auto_android.html' fp = file(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"测试报告",description=u"测试结果详情:") runner.run(test_unit)
以上代码是一个APP的整体测试框架,有些代码隐藏掉了,对代码的理解我希望大家去查看这个文章:https://github.com/Xuyangting/uiautomator
为什么要Android自动化呢?!每次回归测试,就像打地鼠一样,打下去一个又冒出来另一个,真的很心痛,测试人员太苦逼了,每天拿着手机点呀点,所以才选择用uiautomator工具进行协助测试,但这个工具也有很多不好的地方,很多测试场景很难模拟出来,还得人工去进行手工测试。写完这个Android得自动化,接下来要写IOS自动化测试工具-Appium,这个工具和uiautomator类似,就是环境上有点不一样而已
PS:初次写博客对于逻辑思路还不是很会表达出来,希望有疑问的可以加我扣扣进行交流
本人扣扣:407708323
本人博客:http://xuyangting.sinaapp.com/
- Python + Android + Uiautomator自动化测试
- Python + Android + Uiautomator自动化测试
- Android进阶--android自动化测试python+uiautomator
- android uiautomator自动化测试
- UiAutomator android自动化测试
- Android-自动化测试UIAutomator
- Android自动化测试uiautomator
- Android UiAutoMator自动化测试
- Android Uiautomator 自动化测试
- Android Uiautomator 自动化测试
- Android自动化测试之UIAutomator
- Android自动化测试(UiAutomator)
- Android自动化测试工具uiautomator
- Android自动化测试之UIAutomator
- android uiautomator自动化测试记录
- Android自动化测试(UiAutomator)
- Android UiAutomator & UiAutomatorViewer 自动化测试
- Android自动化测试uiautomator入门
- linux 下crontab -e 命令插入及保存
- Java开发中的23种设计模式详解
- CSS控制表格——制作日历
- UVa 331 - Mapping the Swaps
- 过上车
- Python + Android + Uiautomator自动化测试
- 二、JAVA SE基础视频02
- 树状数组的基本写法
- 【AHOI2007】【BZOJ4253】密码箱 加强版
- HDU - 1042 N!
- 博弈探究
- Codevs P1047 邮票面值设计
- java中子类会继承父类的构造方法吗?
- php闭包中use(变量)的作用域