安卓自动化测试案例(跑在MonkeyRunner上)

简介: 首先文件所在目录:MonkeyRunner所在目录: 运行命令(通过cd 命令  进入Tools目录下):运行脚本:monkeyrunner.bat ..\honeywell\jsq.py 源文件代码为:# coding=utf-8import sysfrom com.

首先文件所在目录:

MonkeyRunner所在目录:

 

运行命令(通过cd 命令  进入Tools目录下):

运行脚本:monkeyrunner.bat ..\honeywell\jsq.py

 

源文件代码为:

# coding=utf-8

import sys
from com.android.monkeyrunner import MonkeyRunner as mr,MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice,By
from com.android.chimpchat.hierarchyviewer import HierarchyViewer

#连接设备
device = mr.waitForConnection(30,"emulator-5554")
if not device:
     print >> sys.stderr,"fail"
     sys.exit(1)
#连接设备完成
mr.sleep(2.0)
#打开主屏幕-根据ResourceId
#

#
upArrow="id/all_apps_handle"
easy_device = EasyMonkeyDevice(device)
easy_device.touch(By.id(upArrow), MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
#启动Activity 打开拨号键
activityName="com.android.dialer/.DialtactsActivity"
device.startActivity(component = activityName)
#等待时间,防止操作太快,设备反应不及时
mr.sleep(2.0)

#点击添加拨号动作
action_button="id/floating_action_button"

easy_device.touch(By.id(action_button), MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
#开始拨号
button_1="id/one"
button_2="id/two"
button_3="id/three"
button_4="id/four"
button_5="id/five"
button_6="id/six"
button_7="id/seven"
button_8="id/eight"
button_9="id/nine"
button_0="id/zero"
easy_device.touch(By.id(button_1), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_8), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_9), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_1), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_1), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_6), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_9), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_5), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_0), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_8), MonkeyDevice.DOWN_AND_UP)

easy_device.touch(By.id(button_7), MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
#添加联系人
createNewId="id/cliv_name_textview"
easy_device.touch(By.id(createNewId), MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
#姓名输入  获取焦点
device.touch(300,1060,'DOWN_AND_UP')
mr.sleep(1.0)
#输入
device.type('JackChen')
mr.sleep(2.0)
#关闭键盘
device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
#保存联系人
mr.sleep(2.0)
menu_save="id/menu_save"
easy_device.touch(By.id(menu_save), MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
componentName='com.google.android.apps.messaging/.ui.ConversationListActivity'
#启动特定的Activity
device.startActivity(component = componentName)
mr.sleep(2.0)
#新建信息
messageAdd="id/start_new_conversation_button"
easy_device.touch(By.id(messageAdd), MonkeyDevice.DOWN_AND_UP)
mr.sleep(2.0)
numText="id/recipient_text_view"
easy_device.touch(By.id(numText), MonkeyDevice.DOWN_AND_UP)
mr.sleep(1.0)

device.type('18911695087')
mr.sleep(3.0)
#点击10086
device.touch(301,300,'DOWN_AND_UP')
mr.sleep(2.0)
device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
mr.sleep(1.0)
messageTxt="id/compose_message_text"
easy_device.touch(By.id(messageTxt), MonkeyDevice.DOWN_AND_UP)
mr.sleep(1.0)
device.type('Hello,jack')

#等待时间,防止操作太快,设备反应不及时
mr.sleep(1.0)
btn_send="id/self_send_icon"
easy_device.touch(By.id(btn_send), MonkeyDevice.DOWN_AND_UP)

mr.sleep(3.0)
conversationImg = device.takeSnapshot()
conversationImg.writeToFile('d:\\SendMessage.png','png');

@陈卧龙的博客

相关文章
|
3月前
|
测试技术 Android开发 Python
探索软件测试的艺术:从基础到高级安卓应用开发中的自定义视图
【8月更文挑战第29天】在软件开发的世界中,测试是不可或缺的一环。它如同艺术一般,需要精细的技巧和深厚的知识。本文旨在通过浅显易懂的语言,引领读者从软件测试的基础出发,逐步深入到更复杂的测试策略和工具的使用,最终达到能够独立进行高效测试的水平。我们将一起探索如何通过不同的测试方法来确保软件的质量和性能,就像艺术家通过不同的色彩和笔触来完成一幅画作一样。
|
1月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
40 1
|
1月前
|
XML 前端开发 数据格式
Ruby脚本:自动化网页图像下载的实践案例
Ruby脚本:自动化网页图像下载的实践案例
|
2月前
|
前端开发 机器人 测试技术
【RF案例】Web自动化测试弹窗处理
在进行Web自动化测试时,常会遇到不同类型的弹窗,如ajax、iframe、新窗口及alert/Confirm等。这些弹窗可通过Selenium进行定位与处理。其中,ajax弹窗直接定位处理;iframe需先选中再操作;新窗口类似iframe处理;而alert/Confirm则需特殊方法应对。在Robot Framework中,需先定义并获取窗口后使用特定关键字处理。此外,还有部分div弹窗需在消失前快速定位。希望本文能帮助大家更好地处理各类弹窗。
42 6
【RF案例】Web自动化测试弹窗处理
|
2月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
171 4
Android性能测试——发现和定位内存泄露和卡顿
|
5月前
|
Android开发 iOS开发
android自动化编译
android自动化编译
|
1月前
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
39 0
|
2月前
|
测试技术 Shell Android开发
Android 性能测试初探 (六)
本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试,但本系列文章都不去一一探讨了。
54 6
|
2月前
|
JavaScript 测试技术 Android开发
Android 性能测试初探 (四)
本文介绍了GPU在移动端性能测试中的重要性,并详细解释了过度绘制、帧率和帧方差的概念。针对GPU测试,文章列举了三项主要测试内容:界面过度绘制、屏幕滑动帧速率和平滑度。其中,过度绘制测试需遵循特定标准,而帧速率和平滑度测试则可通过软件或硬件方法实现。在软件测试中,使用Systrace插件和高速相机是两种常用手段。对于不同机型,帧率及帧方差的测试标准也需相应调整。
54 5
|
2月前
|
测试技术 Shell Android开发
Android 性能测试初探 (三)
本文承接《Android性能测试初探(二)》,深入探讨CPU与内存测试。介绍了移动端内存测试的重要性及其测试目标,并详细列举了不同状态下应用内存消耗情况的测试项目。此外,还提供了多种内存测试方法,包括使用`procrank`等工具的具体操作步骤。最后,文章也简要提及了CPU测试的相关内容,帮助读者更好地理解Android性能测试的关键要素。
52 5