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,

2.3 介绍UIAutomator测试框架的UI工具:uiautomatorviewer 如下图: 

uiautomatorviewer位于sdk/tools目录下,可以扫描、分析待测试应用界面,分析结果可以导出为xml与截图。通过该工具可以分析出UI控件的id,text,focusable等等各种属性,甚至布局上的层次关系。 
可以通过./uiautomatorviewer启动该工具。

3.UIAutomator工具的使用

先上一个小Demo代码:

# -*- coding:utf-8 -*-
from uiautomator import device as d
import time
import sys
import random
import unittest
import HTMLTestRunner reload(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("")
d(resourceId="com.isentech.attendance:id/regis_pass").set_text("")
d(resourceId="com.isentech.attendance:id/regis_passAgain").set_text("")
d(text="注册").click()
time.sleep(2)
if d(text="立刻去登录").exists:
d(text="立刻去登录").click()
d(resourceId="com.isentech.attendance:id/txtLoginPassword").set_text("")
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("")
d(text="登录").click()
d(text="请输入您的姓名").set_text("")
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", e if __name__ == "__main__":
phone_number = random.choice(['', '', '', '', '', ''])+"".join(random.choice("") 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类似,就是环境上有点不一样而已

【转】Python + Android + Uiautomator自动化测试的更多相关文章

  1. python+Android+uiautomator的环境

    Python+Android+uiautomator的环境搭建 Python 下载适合系统的版本并安装,安装时勾选把路径加入path 验证:windows下打开cmd输入python 出现以下界面说明 ...

  2. Android UiAutomator 自动化测试编译运行---新手2

    1.首先打开eclipse创建java项目

  3. Android UIAutomator自动化测试

    描述:UiAutomator接口丰富易用,可以支持所有Android事件操作,事件操作不依赖于控件坐标,可以通过断言和截图验证正确性,非常适合做UI测试. UIAutomator不需要测试人员了解代码 ...

  4. Android UiAutomator 自动化测试一些代码实例---新手3

    1.打开浏览器,打开百度实例 public void testBrowser() throws RemoteException, UiObjectNotFoundException{ //灭屏幕-亮屏 ...

  5. Android UiAutomator 自动化测试环境搭建---新手1

    1.首先需要准备的工具有 1.java jdk 2. android开发工具 adt 3.ant 安装包(如果下载adt里面有) 2.首先安装java环境,jdk这个百度就可以了. 3.android ...

  6. Appium python自动化测试系列之Android UIAutomator终极定位(七)

    android uiautomator text定位 可能有人不知道为什么说android uiautomator是终极定位,而且android uiautomator和appium有什么关系呢?如果 ...

  7. Appium+python自动化(十二)- Android UIAutomator终极定位凶“胸”器(七)(超详解)

    简介 乍眼一看,小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了,其实不然,上次介绍和分享的大哥是uiautomatorviewer,是一款定位工具.今天介绍的是一个java库,提供执行自动化测 ...

  8. UiAutomator自动化测试框架介绍

    UiAutomator自动化测试框架介绍 环境搭建 1         必要条件 1.1       JDK 1.2       SDK(API高于15) 1.3       Eclipse 2    ...

  9. 通过实例介绍Android App自动化测试框架--Unittest

    1.为什么需要使用框架实现自动化测试 作为测试工程师,可能在代码能力上相比开发工程师要弱一点,所以我们在写脚本的时候就会相对容易的碰到更多的问题,如果有一个成熟的框架供给我们使用的话,可以帮助我们避免 ...

随机推荐

  1. MoveWindow和SetWindowPos

    SetWindowPos即使里面使用的是一样的矩形参数,有时候SetWindowPos还是会改变窗口的大小,真是坑爹!!! MoveWindow就不会改变 mark一下

  2. Objective-C Numbers

    In Objective-C programming language, in order to save the basic data types like int, float, bool in ...

  3. github入门之分支操作--5

    1.显示分一览表 2.创建.切换分支 2.1.切换到feature-A分支并进行提交 2.1.1.执行下面的命令,创建名为feature-A的分支 实际上,执行以命令也能收到同样的效果,但是我习惯使用 ...

  4. iphone开发设置默认字体

    It seems to be possible in iOS 5 using the UIAppearance proxy. [[UILabel appearance] setFont:[UIFont ...

  5. Gym 100342F Move to Front (树状数组动态维护和查询)

    用树状数组动态和查询修改排名. 树状数组可以很方便地查询前缀和,那么可以利用这一特点,记录一个点在树状数组里最后一次出现的位置, 查询出这个位置,就可以知道这个点的排名了.更改这个点的排名的时候只要把 ...

  6. rpn网络结构再分析

    这是rpn网络train阶段的网络结构图 rpn_conv1之前的网络是特征提取层,也是和fast rcnn共享的层.rpn_conv1是一层1*1的卷积,这一层是单独为rpn网络多提取一层特征,这一 ...

  7. python 实例方法,类方法,静态方法,普通函数

    python中有实例方法,类方法,静态方法,普通函数 类方法需要@ classmethod 修饰并且有个隐藏参数 cls,实例方法必须有个参数 self, 静态方法必须有 @staticmethod修 ...

  8. Java的jdbc调用SQL Server存储过程Bug201906131119

    SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...

  9. 如何在Mac上放大

    您是否发现有时自己眯眼盯着屏幕,希望屏幕上的东西只是“大”一点?无论您是否视力差,或只是想放大屏幕来看近景,这是很容易做到,只需要按一些按键.这篇文章将告诉您如何放大看浏览器或桌面的特写.   方法 ...

  10. Zynq UltraScale+ MPSoC 多媒体应用

    消费者渴望更高的视频质量,推动了视频技术的发展.MPSoC 基于 Zynq-7000SoC ,包括一个可编程逻辑 (PL) 的桥接处理系统 (PS),但它在 Zynq UltraScale+ MPSo ...