博客论文系列篇导航 ----- 你还可以看看这里@_@
-------------------------------------------------------------------------------------------------------------------
一、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使用命令详情
二、命令调试
执行基本的代码形式,在命令窗口中实现:
//简单的示例
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage #引入需要的组件
device = MonkeyRunner.waitForConnection() #获取设备对象
device.press('KEYCODE_MENU','DOWN_AND_UP') #按下菜单按钮
result = device.takeSnapshot() #获取截图文件
result.writeToFile('./shot1.png','png') #将截图文件保存
三、文件运行
将以上内容写成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 MonkeyRunner
from com.android.monkeyrunner import MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import By
from com.android.chimpchat.hierarchyviewer import HierarchyViewer
import sys
type = 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 tool
tool = 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!')