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. Android 实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置

    前几天看到了有人在android5.0上实现了如下图一样的效果,我自己就去搜了下.参考了国外一篇文章和国内的一篇文章,最终实现了想要的效果.具体参考的网址我已经贴到文章末尾,大家可以去英文的那个网站看 ...

  2. 【Web应用-Web作业】Web 作业无法直接运行 jar 文件

    问题描述 在经典管理门户中将直接压缩的 jar 文件打包为 zip 包,上传到 web 作业时报错. 解决方法 jar 文件的运行需要依托于 java 进程,所以在运行 jar 文件时,我们都会以格式 ...

  3. 【Web应用】JAVA网络上传大文件报500错误

    问题描述 当通过 JAVA 网站上传大文件,会报 500 错误. 问题分析 因为 Azure 的 Java 网站都是基于 IIS 转发的,所以我们需要关注 IIS 的文件上传限制以及 requestT ...

  4. Longest Increasing Subsequence的两种算法

    问题描述:给出一个序列a1,a2,a3,a4,a5,a6,a7-.an,求它的一个子序列(设为s1,s2,-sn),使得这个子序列满足这样的性质,s1<s2<s3<-<sn并且 ...

  5. LR中常见请求的使用示例

    Action(){ //application/x-www-form-urlencoded //application/json //web_add_auto_header("Content ...

  6. ORM进阶操作

    一.聚合查询:aggregate(*args, **kwargs) aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典.键的名称是聚合值的标识符,值是计 ...

  7. java字符串拼接技巧(StringBuilder使用技巧)

    在平时的开发中,我们可能会遇到需要拼接如下格式的字符串(至少我是遇到了很多次): 1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1 ...

  8. sparkmlib-相关系数

    一.基本原理 在stat包中实现了皮尔逊(Pearson)与 斯皮尔曼(Spearman)两类相关系数的计算 (1)Pearson:   (x,y)协方差/[(x标准方差)*(y标准方差)] 详情可以 ...

  9. webStorm Ctrl+s 自动格式化 然后 保存 用宏命令

    使用WebStorm的Macros宏指令,实现保存的同时格式化代码,并跳至行尾 https://blog.csdn.net/gyz718/article/details/70556188

  10. go语音实战读后感——一

    1.第一个go程序: package main import ( "fmt" ) func main() { fmt.Println("Hello go") } ...