Android手机自动化测试实例详解

手机自动化框架也比较多,针对ios,android两个不同的平台,最后我挑选了appium,它是利用webdriver来进行驱动测试的,这个框架我比较熟悉,而且它支持两个平台。于是我就针对这两个不同的平台进行了分别的搭建与测试,IOS平台的环境搭建没有问题,具体搭建方法见:

http://blog.sina.com.cn/s/blog_68f262210102v0ta.html,而测试用例,由于现在我没有办法将ipa文件转化成app文件,所以测试用例还没有搞定。问题解决后,会发相应的文章的。

本篇介绍一下Windows环境下android自动化测试的具体实例,环境安装见:

http://blog.sina.com.cn/s/blog_68f262210102v4aj.html,现在说一下测试用例:

测试对象:网信金融旗下的众筹网的手机应用

运行对象:android模拟器(真机运行见下篇)

测试用例:简单的登录

用例语言:webdriver+python

测试步骤:

1,启动appium

在Windows下,找到appium应用程序,双击打开,然后右上角的appium启动按钮,看到输出日志,表明启动成功。

2,启动android模拟器

模拟器如何创建,参见:

http://blog.sina.com.cn/s/blog_68f262210102v4a7.html,本人创建的模拟器为:antester,启动方法:在cmd下输入:emulator @antester,过一会儿就会弹出android模拟器:

3,编写测试用例

使用你习惯的编辑软件来写你的测试用例,我用语言是python,下面介绍一下具体的测试用例。

#-*- coding: UTF-8 -*-

#导入常用的包

import os

import time

import unittest

from selenium import webdriver

from lib2to3.pgen2.driver import Driver

from lib2to3.tests.support import driver

#设置路径信息

PATH=lambda p:os.path.abspath(

os.path.join(os.path.dirname(__file__),p)

)

global driver

class LoginAndroidTests(unittest.TestCase):

def setUp(self):

#初始化测试平台

desired_caps={}

desired_caps[‘device‘] = ‘android‘

desired_caps[‘platformName‘]=‘Android‘ #测试平台

desired_caps[‘browserName‘]=‘‘

desired_caps[‘version‘]=‘4.2.2‘#系统版本

desired_caps[‘deviceName‘]=‘antester‘#模拟器名称

desired_caps[‘app-package‘]=‘com.subject.zhongchou‘#要测试的app

desired_caps[‘app-activity‘]=‘.ZhongChou‘#当前活动应用

self.driver=webdriver.Remote(‘http://localhost:4723/wd/hub‘,desired_caps)

def tearDown(self):

self.driver.quit()

def test_login(self):

time.sleep(30)

#点击“注册登录”按钮

button=self.driver.find_element_by_id("com.subject.zhongchou:id/register_button")

button.click()

time.sleep(10)

#登录

name =self.driver.find_element_by_id(‘com.subject.zhongchou:id/loginnumber_phone‘)

name.click()

name.send_keys(‘183XXXXX905‘) #输入用户名

psd =self.driver.find_element_by_id(‘com.subject.zhongchou:id/loginnumber_password‘)

psd.click()

psd.send_keys(‘XXXXXXX‘) #输入密码

blogin=self.driver.find_element_by_id(‘com.subject.zhongchou:id/go_numberlogin‘) #单击登录按钮

blogin.click()

time.sleep(10)

#此处要检测是否登录成功,我懒省事,略了!

if __name__ == ‘__main__‘:

suite = unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)

unittest.TextTestRunner(verbosity=2).run(suite)

上面是一个完整的测试用例,关系到元素的定位,内容的输入等操作。其实还可以优化一下,把测试数据独立出来放到一个xml文件中,而且通用的操作,可以放到一个类中封闭成通用方法,此代码只为了说明测试用例结构用的。

元素的定位

元素的定位是自动化测试的头等大事,在页面自动化测试的时候,Selenium IDE提供了很好的定位,录制等方法。可是在手机自动化测试的时候,没有很好的工具 ,一般用的是appium inspector, uiautomatorviewer和hierarchyviewer等工具,具体使用方法自己去网上查一下。可是没有很好的录制方法,虽然appium inspector在mac上可以对IOS的App进行录制,但是不太好用。

Appium有一个很好的交流网站:http://www.testerhome.com/topics,大家可以时常去浏览一下,相信能学到很多知识的。快速,准确的定位是要靠经验的,这个帖子http://testerhome.com/topics/167,讲了一些儿定位方法,希望对大家有所启发。

时间: 2024-11-03 22:43:30

Android手机自动化测试实例详解的相关文章

Android 调用WCF实例详解

Android 调用WCF实例 1. 构建服务端程序 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 using System.ServiceModel; namespace yournamespace {   [ServiceContract(Name = "HelloService", Namespace = "http://www.master.haku")]   public interface IHello   {     [Operati

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

实例详解:反编译Android APK,修改字节码后再回编译成APK

本文详细介绍了如何反编译一个未被混淆过的Android APK,修改smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk无论输入什么样的用户名和密码都可以成功进入到第二个Activity. 有时难免要反编译一个APK,修改其中的若干关键判断点,然后再回编译成一个全新的可用的apk,这完全是可实现的.若要完成上述工作,需要以下工具,杂家后面会把下载链接也附上.这些软件截止本文发布时,经过杂家确认都是最新的版本. 1.APK-Multi-Toolv1.0.11.zip 用它

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林

Android四大组件--Activity详解

Android四大组件--Activity详解 分类: android android应用android开发 本文的主要内容包括1.activity的建立.配置和使用:2.activity的跳转和传值:3.startActivityForResult:4.activity的生命周期. 1.activity的建立.配置和使用 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供一个可视的窗口,一般情况

Android 接口回调机制详解

在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程或者是异步任务去做的,这就会导致我们期望函数回调完毕去返回一个主函数的结果,实际发现是行不通的,因为如果回调是多线程的话你是无法和主函数同步的,也就是返回的数据是错误的,这是非常隐秘的一个错误.那有什么好的方法去实现数据的线性传递呢?先介绍下回调机制原理. 回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数

《HTML 5网页开发实例详解》目录

第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的整体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的了解HTML 5 1.1.1  通过W3C认识HTML 5的发展史 1.1.2  HTML 5.HTML4.XHTML的区别 1.1.3  什么人应该学HTML 5 1.1.4  一个图告诉你如何学习HTML 5 1.2  浏览器之争 1.2.1  说说这些常见的浏览器 1.2.2  浏览器的兼容烦

转:android Support 兼容包详解

本文转自stormzhang的ANDROID SUPPORT兼容包详解 背景 来自于知乎上邀请回答的一个问题Android中AppCompat和Holo的一个问题?, 看来很多人还是对这些兼容包搞不清楚,那么干脆写篇博客吧. Support Library 我们都知道Android一些SDK比较分裂,为此google官方提供了Android Support Library package 系列的包来保证高版本sdk开发的向下兼容性, 所以你可能经常看到v4,v7,v13这些数字,首先我们就来理清

Android开发之SpannableString详解

在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等.一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借助SpannableString或SpannableStringBuilder对象来实现以上设置. SpannableString与SpannableStringBuilder都可以将某段文本设置成一个Span,在Android中,Span表示一段文本的效果,例如,链接形式.图像.带背景的文本等.只