Android自动化测试MonkeyRunner(二)------第一个示例
来源:互联网 发布:矩阵加常数 编辑:程序博客网 时间:2024/05/22 11:38
博客论文系列篇导航 ----- 你还可以看看这里@_@
-------------------------------------------------------------------------------------------------------------------
一、ADB基本命令
ADB Android Debug Bridge:Android调试桥
adb kill-server:关闭adb服务器 adb start-server:开启adb服务器
adb devices :展示链接设备,使用这个命令也有adb start-server的功能
应用以上命令,可以将真机与Android运行环境连接起来。
使用天天模拟器,夜神模拟器则使用adb connect 127.0.0.1:6555,adb connect 127.0.0.1:62001,实现模拟器链接。
ADB使用命令详情
二、命令调试
执行基本的代码形式,在命令窗口中实现:
//简单的示例
<span style="background-color: rgb(255, 204, 204);">from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage <span style="color:#009900;">#引入需要的组件</span>device = MonkeyRunner.waitForConnection() <span style="color:#009900;">#获取设备对象</span>device.press('KEYCODE_MENU','DOWN_AND_UP') <span style="color:#009900;">#按下菜单按钮</span>result = device.takeSnapshot() <span style="color:#009900;">#获取截图文件</span>result.writeToFile('./shot1.png','png') <span style="color:#99ff99;"> </span><span style="color:#009900;">#将截图文件保存</span></span>
三、文件运行
将以上内容写成python.py,在Android SDK工具包环境下,执行该文件:monkeyrunner python.py
实现文件的调用后,可先在Python编辑器中编辑文件,然后再应用命令直接执行文件。实现了大量命令的级数级增长,并便于代码的重复应用。
四、代码框架及编码规范
在三的基础上,可实现文件的保存。则可以在文件中实现自动化测试流程以及检核对应的功能。
Python语言拥有类JAVA的很多高级特性。采用程序框架编码法,会提高程序的重复利用率。
应用面向对象的思想,类的类型主要分为:工具类与功能实体类。
工具类中主要包含:打印信息,上拉刷新,下拉加载,点击,手机按键Home、Menu、确认、上下左右键,截图保存,退出,返回等;
功能实体类,则依据app的特点,对具体的功能封装对象。在实现中,常采用以一个页面为一个实体类。购物类的app底部导航为五个,详情及列表各一个。实现中,先依据每一个对象本身的逻辑,校核本身功能;在根据业务流程,通过不同页面对象调用本身的方法链接形成业务流程。
以首页为例:本身有上拉加载更多,下拉刷新,后台运行【Home键】,以及实现每个位置跳转下一页面等功能。那分类页会有其对应功能。
第一种测试对象本身逻辑就是:分别检核首页每个页面功能;第二种测试就是一句逻辑,分别用对象调用对应方法组成一个系列,形成业务逻辑。
文件说明:################################################################################## 文件说明:# 订货宝测试流程探索过程代码实现# 类:工具、订货宝、首页# 执行人:幻视# 时间: 2016.04.20# 修改:##################################################################################类说明:#===============================================================================# 类说明:# 定义基本的工具方法# 方法:# 下拉刷新、通过点点击、通过ViewID点击、退出程序、返回、开启Activity、# Home、向下导航、向上导航、Ok键、Menu键# 打印信息页#===============================================================================方法说明: #-------------------------------------------------------------------------------- # 方法说明: 下拉刷新 传入:开始Y,结束Y #--------------------------------------------------------------------------------代码执行说明:1级:########################################################################################################################################################################## #首页测试方法调用 2级:######################################################################################============================================================================#首页测试方法调用3级:######################################################################################------------------------------------------------------------------------------------------------------------------------------
一个实例:
#-*- coding:utf-8 –*-################################################################################## 文件说明:# 购物类app测试流程探索过程代码实现# 类:工具、购物类、首页# 执行人:幻视# 时间: 2016.04.20# 修改:##################################################################################from com.android.monkeyrunner import MonkeyRunnerfrom com.android.monkeyrunner import MonkeyDevicefrom com.android.monkeyrunner.easy import EasyMonkeyDevicefrom com.android.monkeyrunner.easy import Byfrom com.android.chimpchat.hierarchyviewer import HierarchyViewerimport systype = sys.getfilesystemencoding()reload(sys)sys.setdefaultencoding( "utf-8" ) #更改编码方式device = MonkeyRunner.waitForConnection() #获取设备对象easy_device = EasyMonkeyDevice(device)#================================================================================# 类说明:# 定义基本的工具方法# 方法:# 下拉刷新、通过点点击、通过ViewID点击、退出程序、返回、开启Activity、# Home、向下导航、向上导航、Ok键、Menu键# 打印信息页#================================================================================class Tool: #-------------------------------------------------------------------------------- # 方法说明: 下拉刷新 传入:开始Y,结束Y #-------------------------------------------------------------------------------- def pullToFlush(self,start,end): device.drag((300,start),(300,end),0.1,10) #下拉刷新 device.drag((250,end),(250,start),0.1,10) #上滑 #-------------------------------------------------------------------------------- # 方法说明: 根据坐标点击 #-------------------------------------------------------------------------------- def touchPoint(self,point_x,point_y): device.touch(point_x,point_y,MonkeyDevice.DOWN_AND_UP) #点击 MonkeyRunner.sleep(3) #-------------------------------------------------------------------------------- # 方法说明: 根据View ID点击 #-------------------------------------------------------------------------------- def touchView(self,view_id): easy_device.touch(By.id(view_id),MonkeyDevice.DOWN_AND_UP) #点击 MonkeyRunner.sleep(3) #-------------------------------------------------------------------------------- # 方法说明: 退出程序 EXIT #-------------------------------------------------------------------------------- def exit(self): for i in range(1,3): device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP) #点击返回 #-------------------------------------------------------------------------------- # 方法说明: 点击返回 BACK #-------------------------------------------------------------------------------- def back(self): for i in range(0,1): device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)#点击返回 #-------------------------------------------------------------------------------- # 方法说明: 开启新的Activity 传入:包名,Activity全路径名 #-------------------------------------------------------------------------------- def startActivity(self,package,activity): runComponent = package + '/' + activity device.startActivity(component=runComponent) MonkeyRunner.sleep(3.0) #-------------------------------------------------------------------------------- # 方法说明: 按下HOME键 #-------------------------------------------------------------------------------- def home(self): device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP) #-------------------------------------------------------------------------------- # 方法说明: 按下下导航键 #-------------------------------------------------------------------------------- def downGuide(self): device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) #-------------------------------------------------------------------------------- # 方法说明: 按下上导航键 #-------------------------------------------------------------------------------- def upGuide(self): device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP) #-------------------------------------------------------------------------------- # 方法说明: 按下OK键 #-------------------------------------------------------------------------------- def ensureOK(self): device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP) #-------------------------------------------------------------------------------- # 方法说明: 按下MENU键 #-------------------------------------------------------------------------------- def menuGuide(self): device.press('KEYCODE_MENU',MonkeyDevice.DOWN_AND_UP) #-------------------------------------------------------------------------------- # 方法说明: 打印信息 #-------------------------------------------------------------------------------- def printInfo(self): print("打开页面失败") print('\n') #================================================================================# 类说明:# 购物类主页面框架跳转# 方法:# 欢迎页进入主页、跳转主页、跳转分类页、跳转活动页、跳转购物车页、跳转个人中心页#================================================================================class DS365Order: #购物类global tooltool = Tool() #-------------------------------------------------------------------------------- # 方法说明: 通过欢迎页进入主页 #-------------------------------------------------------------------------------- def initActivity(self): print("开启欢迎页面 start SplashActivity") tool.startActivity('包名','Activity全路径名') #开启欢迎页 MonkeyRunner.sleep(2) print("进入主页面 mainActivity start") print('\n') #-------------------------------------------------------------------------------- # 方法说明: 切换到主页 #-------------------------------------------------------------------------------- def mainActivityOpen(self): print("打开分类页面 mainActivity start") tool.touchView('id/radio_a') #点击view通过id MonkeyRunner.sleep(2) print("打开分类页面 mainActivity End") print('\n') #-------------------------------------------------------------------------------- # 方法说明: 切换到分类页面 #-------------------------------------------------------------------------------- def classIfyOpen(self): print("打开分类页面 classIfyActivity start") tool.touchView('id/radio_b') #点击view通过id MonkeyRunner.sleep(2) print("打开分类页面 classIfyActivity End") print('\n') #-------------------------------------------------------------------------------- # 方法说明: 切换到活动页 #-------------------------------------------------------------------------------- def eventActivityOpen(self): print("打开活动页面 EventActivity start") tool.touchView('id/radio_c') #点击view通过id MonkeyRunner.sleep(2) print("打开活动页面 EventActivity end") print('\n') #-------------------------------------------------------------------------------- # 方法说明: 切换到购物车页 #-------------------------------------------------------------------------------- def shopCarActivityOpen(self): print("打开购物车页面 shopCarActivity start") tool.touchView('id/radio_d') #点击view通过id MonkeyRunner.sleep(2) print("打开购物车页面 shopCarActivity end") print('\n') #-------------------------------------------------------------------------------- # 方法说明: 切换到个人中心 #-------------------------------------------------------------------------------- def myCenterActivityOpen(self): print("打开个人中心页面 myCenterActivity start") tool.touchView('id/radio_e') #点击view通过id MonkeyRunner.sleep(2) print("打开个人中心页面 myCenterActivity end") print('\n')#================================================================================# 类说明:# 定义首页测试# 方法:# 跳转二维码扫描、跳转搜索页# 畅销商品、我的货架、趣味购物、特价商品# 促销专场# 品牌馆#================================================================================class ShouYe: #-------------------------------------------------------------------------------- # 方法说明: 打开二维码扫描页面 #-------------------------------------------------------------------------------- def startSearchImgBt(self): print("打开二维码扫描页面 SearchImgActivity start") tool.touchView('id/searchImageButton') #点击view通过id MonkeyRunner.sleep(2) print("打开二维码扫描页面 SearchImgActivity end") print('\n') #-------------------------------------------------------------------------------- # 方法说明: 切换到搜索页面 #-------------------------------------------------------------------------------- def searchActivityOpen(self): print("打开搜索页面 searchActivity start") tool.touchView('id/search_keyword') #点击view通过id MonkeyRunner.sleep(2) print("打开搜索页面 searchActivity end") print('\n') #-------------------------------------------------------------------------------- # 四大固定区域 -- 快捷入口 #-------------------------------------------------------------------------------- def promotionActivityOpen(self): #切换到畅销商品页面 print("打开畅销商品页面 promotionActivity start") tool.touchView('id/goMarketing_RL') #点击view通过id MonkeyRunner.sleep(2) print("打开畅销商品页面 promotionActivity end") print('\n')def myShelfActivityOpen(self): #切换到我的货架页面 print("打开我的货架页面 myShelfActivity start") tool.touchView('id/groupBuying_RL') #点击view通过id MonkeyRunner.sleep(2) print("打开我的货架页面 myShelfActivity end") print('\n')def shakeOKActivityOpen(self): #切换到趣味购物页面 print("打开趣味购物页面 shakeOKActivity start") tool.touchView('id/shakeOK_RL') #点击view通过id MonkeyRunner.sleep(2) print("打开趣味购物页面 shakeOKActivity end") print('\n')def lowPriceActivityOpen(self): #切换到特价区页面 print("打开特价区页面 lowPriceActivity start") tool.touchView('id/recharge_RL') #点击view通过id MonkeyRunner.sleep(2) print("打开特价区页面 lowPriceActivity end") print('\n') #-------------------------------------------------------------------------------- # 促销专场 GridView #-------------------------------------------------------------------------------- def promotionImgActivityOpen(self): #切换到促销专场商品列表页面 print("打开促销专场商品列表页面 promotionImgActivity start") tool.touchView('id/promotionImage') #点击view通过id MonkeyRunner.sleep(2) print("打开促销专场商品列表页面 promotionImgActivity end") print('\n') #-------------------------------------------------------------------------------- # 品牌馆 GridView #-------------------------------------------------------------------------------- def pinpaiImgActivityOpen(self): #切换到品牌馆商品列表页面 print("打开品牌馆商品列表页面 pinpaiImgActivity start") tool.touchView('id/pinpaiImage') #点击view通过id MonkeyRunner.sleep(2) print("打开品牌馆商品列表页面 pinpaiImgActivity end") print('\n')###########################################################################################################################################################################整体代码开始执行toolUse = Tool()order = DS365Order()order.initActivity()######################################################################################====================================================================================#首页测试方法调用shouye = ShouYe()try: shouye.startSearchImgBt() toolUse.back()except ValueError: toolUse.printInfo()try: shouye.searchActivityOpen() toolUse.back()except ValueError: toolUse.printInfo() try: shouye.promotionActivityOpen() toolUse.back()except ValueError: toolUse.printInfo()try: shouye.myShelfActivityOpen() toolUse.back()except ValueError: toolUse.printInfo()try: shouye.shakeOKActivityOpen() toolUse.back()except ValueError: toolUse.printInfo() try: shouye.lowPriceActivityOpen() toolUse.back()except ValueError: toolUse.printInfo()try: shouye.promotionImgActivityOpen() toolUse.back()except ValueError: toolUse.printInfo()try: shouye.pinpaiImgActivityOpen() toolUse.back()except ValueError: toolUse.printInfo()######################################################################################====================================================================================#订货宝主页面框架切换order.classIfyOpen()order.eventActivityOpen()order.shopCarActivityOpen()order.myCenterActivityOpen()order.mainActivityOpen()######################################################################################====================================================================================#系统清理toolUse.exit()MonkeyRunner.alert("finish")print('test finished!')
路漫漫其修远兮,吾将上下而求索 ~_~
- Android自动化测试MonkeyRunner(二)------第一个示例
- Android自动化测试(MonkeyRunner)
- Android自动化测试之MonkeyRunner工具(二)
- android自动化测试之MonkeyRunner使用实例(二)
- android 自动化测试之MonkeyRunner学习(二)
- Android自动化测试之Monkeyrunner从零开始(二)
- android 自动化测试 monkeyrunner
- android monkeyRunner 自动化测试
- Android自动化测试Monkeyrunner
- android自动化测试MonkeyRunner
- android 自动化测试Monkeyrunner
- MonkeyRunner:Android自动化测试
- 采用MonkeyRunner自动化测试(二)
- Android自动化测试之MonkeyRunner之MonkeyRunner(九)
- Android自动化测试之Monkeyrunner(1)
- Android自动化工具Monkeyrunner使用(二)
- android自动化测试Monkeyrunner源码分析之二
- Android自动化测试之monkeyrunner
- 5.Maven项目的聚合与继承
- Your project contains error(s),please fix them before running your application解决办法
- Docker网络配置(三)
- 微信支付的那些坑!
- mysql Unknown system variable 'language'
- Android自动化测试MonkeyRunner(二)------第一个示例
- redis报错:jedis connection exception unexpected end of stream
- lucene学习之近实时搜索
- 科研论文阅读与写作实战技巧
- 数据结构复习总结
- Android学习第二课
- jquery.dataTables的使用方法
- 老戚的黑科技之ssh无密码登录
- Spring中基于Schema的AOP配置详解