android MonkeyRunner的使用

安卓自动化测试工具MonkeyRunner之录制回放 头一次写技术类博客,纯粹作为工作记录。近期开始学习移动平台安卓的自动化测试工具MonkeyRunner,以下简称MR。先介绍一下录制和回放功能。 1、MR是安卓软件包里自带的一个工具,存放目录在android-sdk-windows-new\tools目录下monkeyrunner.bat,与其说它是一个工具,倒不如说它提供了一系列的接口供调用。 2、准备录制和回放脚本: 将以下代码存储为m 阅读详情

monkeyRunner的环境搭建和基本概念我就不都介绍了,如果你对此不了解的请出门左拐自行谷歌。重点讲解如何使用。

脚本文件的创建

打开你sdk安装目录下的tools文件夹下,比如:
D:\android\sdk\tools
创建一个名为Touch.py的文件,如下图所示:
这里写图片描述

脚本文件的编写

我们就以360手机助手为例。首先我们要先获取到360手机助手的应用包名和启动Activity。如何获取这两个呢?反编译啊这么简单的还问对不对(有谁不知道的告诉我,我不会笑你的,哈哈哈,说好的不笑呢)好了,至于反编译应该不用我都说啥了,我想各个都是高手。

进到apktool.bat 所在的目录下,把下载好的360手机助手的apk包也放在这个路径下,打开命令行工具,进到当前在这个目录下,执行apktool.bat d 360.apk 如下图所示:
这里写图片描述

反编译完成后就可以看一个360的文件夹
这里写图片描述

在这个目录下会自动生成一个360的文件夹,打开这个文件夹就可以看到Mainifest.xml文件了找到应用包名和启动activity,拿到这两个之后就可以开干了。

# -*- coding: utf-8 -*-

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

device = MonkeyRunner.waitForConnection()
easyMonkey = EasyMonkeyDevice(device)  

package = 'com.qihoo.appstore'
activity = 'com.qihoo.appstore.home.LauncherActivity'

runComponent = package + '/' + activity

# Runs the component
device.startActivity(component=runComponent)

# 等待几秒钟
MonkeyRunner.sleep(3)

运行脚本

打开命令行,进入到你的tools目录下,执行当前这个脚本。
这里写图片描述
当你看到应用启动成功就说明这个脚本编写成功了。

基本语法

模拟点击

device = MonkeyRunner.waitForConnection()
device.touch(300,250,MonkeyDevice.DOWN_AND_UP) 

300:代表在屏幕上的x坐标

250:代表在屏幕上的y坐标

MonkeyDevice.DOWN_AND_UP : 代表点击事件 点击还有DOWN、UP这两个事件

device.press('KEYCODE_BACK')
press (string name, integer type)

name:这个代表模拟点击手机的物理按键,如back、menu、音量+、音量- 等等 具体的可以参考http://developer.android.com/intl/zh-cn/reference/android/view/KeyEvent.html(需要自备梯子)
type:MonkeyDevice的DOWN_AND_UP、DOWN、UP这三个事件

滑动

device.drag ( tuple start, tuple end, float duration, integer steps)
device.drag((250,850),(250,110),0.5,10)

start 起始坐标

end 结束坐标

duration 执行时间 默认为1秒

steps 步长 默认为10. 设置为1的话 可以实现滑屏(新手引导页面中就可以使用了)

输入文字

device.type('91')

91:代表你想输入的文字

获取手机屏幕的宽高

width = int(device.getProperty("display.width").encode('utf-8'))
height = int(device.getProperty("display.height").encode('utf-8'))

display.width 代表屏幕的宽,还有其他的参数可以参考http://developer.android.com/intl/zh-cn/tools/help/MonkeyDevice.html#table1(需要自备梯子)

通过ID获取控件

viewer = device.getHierarchyViewer()
searchView = viewer.findViewById('id/btn_search') 

注意:但很多手机上view server不工作,即使被rooted了,也就是活getHierarchyViewer()获取不到对象(所以推荐使用模拟器),后面的参考文献中有这方面的blog介绍,你们也可以去研究下。

ID可以通过下图的工具中获取,具体的可以自行百度查看下如何使用。
这里写图片描述

另一种方式通过EasyMonkeyDevice:

easyMonkey = EasyMonkeyDevice(device) 
download = By.id('id/download_tv')
easyMonkey.touch(download,MonkeyDevice.DOWN_AND_UP) 

获取listView的item

def getSelectListViewItem(viewer,device,index,viewId):
    contentView = viewer.findViewById(viewId)

    listView = contentView.parent
    childs = listView.children

    itemView = childs[index].children

    return itemView

这是以360应用首页为例子的python脚本

整体的运用

# -*- coding: utf-8 -*-

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

device = MonkeyRunner.waitForConnection()
easyMonkey = EasyMonkeyDevice(device)  

package = 'com.qihoo.appstore'
activity = 'com.qihoo.appstore.home.LauncherActivity'

runComponent = package + '/' + activity

# Runs the component
device.startActivity(component=runComponent)

# 等待几秒钟
MonkeyRunner.sleep(3)

# 滑动 
device.drag((250,850),(250,110),0.5,10)

#输入文字
device.touch(300,200,MonkeyDevice.DOWN_AND_UP) # 这个坐标要自己调整
MonkeyRunner.sleep(3) # 等待3秒
device.type('91')

# 按回车键
MonkeyRunner.sleep(1)
device.press('KEYCODE_ENTER')

# 回退到主界面
MonkeyRunner.sleep(1)
device.press('KEYCODE_BACK')

# 获取listView某一项的item
viewer = device.getHierarchyViewer()
contentView = viewer.findViewById('id/home_title')

listView = contentView.parent
childs = listView.children

itemView = childs[2].children

#获取当前item上的文字
relayout = itemView[0]
textView = viewer.findViewById('id/common_list_name',relayout)
text = viewer.getText(textView).encode('utf-8')
print text

参考文献

http://blog.youkuaiyun.com/mad1989/article/details/38087737

http://blog.youkuaiyun.com/jl_qiqi/article/details/8658515

https://www.dup2.org/comment/6246

http://www.2cto.com/kf/201411/356056.html

http://blog.youkuaiyun.com/vshuang/article/details/39783579

http://www.bubuko.com/infodetail-11124.html

http://www.51testing.com/html/47/47-810274.html

http://www.tuicool.com/articles/JfEVr2

http://www.51testing.com/html/36/n-848536.html

感谢他们的无私奉献!

Android自动化测试之MonkeyRunner使用 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Python的程序来模拟操作控制Android设备app,测试其稳定性并通过截屏可以方便地记录出现的问题。       monkeyrunner和money没有什么直接的关系,monkey是在设备直接运行adb shell命令生成随 阅读详情

相关推荐

Android 测试工具Monkey & Monkeyrunner 使用方法

程序编写完成后进行测试一定是必不可少的,Android Sdk给我们提供了Monkey和Monkeyrunner这两个自动化测试工具。时光境迁,随着版本的不断更新迭代,Monkey和Monkeyrunner也在不断的改变,改变的速度甚至已经到了官方文档有时都跟不上了,这无疑给我们的学习带来很多困扰。        今天我把我近期使用Monkey和Monkeyrunner的一些体会与大家分享,Sd

野老头的专栏 4万+

android 自动化测试之monkeyrunner学习(三),自动化测试之Monkeyrunner

一、功能Android自动化测试工具二、环境配置1 android-sdk2 jdk3 配置python环境monkeyrunner在Android SDK的tools文件夹下三、打开方式1 命令行方式命令:monkeyrunner导入monkeyrunner所要使用的模块:from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice...

weixin_39640203的博客 477

关于Android自动化测试Monkey和MonkeyRunner不能正常运行的说明

前言: 哈喽,感谢一直关注和支持我的人,好久没更新博客了,今天逛了一下发现多了很多关注。所以写篇博客压(填)压(下)惊(坑)! 前段时间看了一本腾讯出的自动化测试Android的书籍,至于为什么会看书,因为最近穷。古人云:“书中自有黄金屋”。看完后还是穷,不知道是不是看的方式不对,并没有发现黄金。[/苦笑] 既然看了书,今天就来说说和书上无关的东西吧! 以前很少关注测试这一块,最多也就

比较喜欢、笑的博客专栏 6073

Android自动化测试之Monkeyrunner使用方法及实例_monkeyrunner 获取标签(2)

命令:emulator -avd test (注意:test为虚拟设备的名称——AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,如下图所示:)上面命令中的test是模拟器名称。使用时需要改成实际名字。如果正常,模拟器应该可以启动起来了。如果执行的结果出现以下错误内容:Plain代码如下图所示:原因在于你的环境变量缺少配置。

2401_84141332的博客 527

从string一词感受从字母象形到语义生成的底层逻辑

从词源上看,个人认为,soft一词的含义主要来自于“柔软水滑或柔软光滑”这样的含义,是从这样的含义中逐渐窄化,最终主要用来指“柔软”之意,而光滑、水滑这样的含义或语义形象最终被淡化,所以,soft如果符合首字母象形原则,那么它主要的来源形象,应当是【水】,也就是说,soft一词和smooth(a.光滑的)、ski(滑雪)/skate(滑冰)、slip(滑倒)/slippers(拖鞋)、slide(滑动)是相通的,并最终和sea(海)、sweat(汗/汗水)这一类和水一直相关的单词也相通。

nshkfhwr的博客 1269

SSL证书验证:VMware Horizon Client的安全隐患与临时解决方案

本文深入分析了VMware Horizon Client中SSL证书验证失败的安全隐患,提供了临时解决方案与长期防御策略。针对自签名证书、证书链断裂等常见问题,文章详细解析了风险成因,并给出分级响应方案,帮助企业平衡安全与效率。通过实战案例和自动化脚本,指导IT管理员构建主动防御体系,有效降低中间人攻击风险。

weixin_29290863的博客 337

Android自动化测试之MonkeyRunner--从环境构建、参数讲解、脚本制作到实战技巧

(1) JDK的安装不配置(2) 安装Python编译器(3) 设置环境变量(配置Monkeyrunner工具至path目彔下也可丌配置)(4) TT安装 monkeyrunner无论导入什么库,都是app层的黑盒测试,用TT来弥补能达到白盒级结果。monkeyrunner 也是一款安卓sdk自有的测试工具,位亍\sdk\tools下面相比monkey强大一些, 它主要可应用亍功能测试,回归测试,并且可以自定义测试扩展,灵活性较强,测试人员可以完全 控制。

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 3429

别光看Demo了!用UE5 Lyra框架快速搭建你的多人对战游戏原型(含完整配置流程)

本文详细介绍了如何利用UE5 Lyra框架快速搭建多人对战游戏原型,包含完整的配置流程和实战案例。Lyra作为可直接二次开发的游戏模板,内置了GAS技能系统、Enhanced Input输入控制等核心功能,大幅缩短开发周期。通过替换角色模型、调整武器数值和配置新地图规则,开发者可在48小时内完成科幻团队竞技游戏原型的搭建。

weixin_28717411的博客 457

Android自动化测试之Monkeyrunner学习笔记(一)

Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具、方法和框架做了一些简单的整理,其中包括Monkey、Monkeyrunner、Athrun、appium,目前仍在了解学习android测试框架、CTS等。本文主要为前段时间学习总结,由于刚接触不久,故本文难免会有些肤浅,大神请绕走~ ...

weixin_30666753的博客 784

从RadixTree到哈希表:深入对比SGLang和vLLM的Prefix Cache实现差异

本文深入对比了SGLang与vLLM在大语言模型推理服务中实现Prefix Cache(前缀缓存)的两种核心方案。SGLang采用基于Radix Tree的RadixAttention,支持任意长度前缀的精确匹配与灵活复用;vLLM则采用基于哈希表的方案,深度集成于PagedAttention,实现简洁但要求块级精确对齐。文章剖析了二者在设计哲学、内存管理、适用场景及集群级优化(如Prefix Cache Aware Routing)上的关键差异,为高性能LLM服务的技术选型提供决策依据。

blockchain9miner的博客 956

低成本实现webhook接收端[python]

Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。

锡城小凯的博客 1万+

android 自动化测试之monkeyrunner学习(三),Android自动化测试之——MonkeyRunner(2)

一、MonkeyRunner APIMonkeyRunner API包含了三个模块在com.android.monkeyruner包中:1、MonkeyRunner一类用于MonkeyRunner程序的实用方法。该类提供了一种将MonkeyRunner连接到设备或仿真器的方法。它还提供了为monkeyrunner程序创建UI以及显示内置帮助的方法2、MonkeyDevice表示设备或仿真器。这个类...

weixin_39769807的博客 351

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、

yonggeit的博客 3270

Android monkeyrunner整理

Android monkeyrunner整理Android monkeyrunner整理 简介 特性 使用方法 Monkeyrunner API 运行 示例卸载旧的APP安装新的APP 方法一 方法二 API MonkeyRunner MonkeyDevice MonkeyImage 总结 优点 缺点 Monkey与Monkeyrunner差别 相关链接 简介monkeyrunner即android

流水不腐小夏 1262

深度解析电力负荷预测:基于深度学习的完整实战指南

电力负荷预测是智能电网运行中的核心技术之一,准确的负荷预测对于电网的稳定运行、电力市场交易以及能源调度具有重要意义。本文将详细介绍电力负荷预测的完整解决方案,从数据预处理、特征工程到模型构建与评估,提供完整的可执行代码。我们将使用LSTM(长短期记忆网络)和Transformer两种主流深度学习模型进行实现,并通过实际数据集验证模型效果。电力负荷预测是指根据历史负荷数据、气象因素、时间特征等多维信息,预测未来某一时段的电力需求。超短期负荷预测:未来几分钟到几小时短期负荷预测:未来1天到1周中期负荷预测。

YOLO 111

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战

大模型与知识图谱的融合不是简单拼接,而是认知智能的范式重构。当符号主义的精确性与连接主义的泛化能力深度交织,我们正站在通向可信AGI的关键路口。正如OpenKG技术委员会王昊奋教授所言:“2025年将是图模协同从技术探索走向规模落地的分水岭”。参考文献OpenKG 2024年度报告(同济大学王昊奋)大型语言模型与知识图谱协同研究综述(海豚实验室,2024)知识图谱与大模型结合方法概述(黄巍,2023)图模互补:知识图谱与大模型融合综述(优快云,2024)

知识靠谱的博客 1092

安卓自动化测试monkeyrunner

录制与回放 连接手机(打开文件传输)或者是打开模拟器 进入安装sdk的AndroidSDK\Android_SDK_windows\tools目录下 执行monkeyrunner recorder.py recoder.py脚本内容 from com.android.monkeyrunner import MonkeyRunner as m from com.android.monkeyru...

Theahe的博客 245

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

安卓MonkeyRunner使用步骤之hello world

1. 启动模拟器或者连上真机(本文使用的是模拟器 2. 打开cmd命令行 3. 在命令行输入monkeyrunner进入monkeyrunner的编辑台;导入MonkeyRunner MonkeyDevice;等待连接      4. 安装apk     device.installPackage("todolist.apk")      4. 启动activity,其中comp

os_2008的博客 501

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android的Monkeyrunner

Monkeyrunner提供API来让用户开发程序控制Android设备以及模拟器。通过Monkeyrunner,可以写一个Python程序去安装Android应用程序或者测试包,然后运行应用,向它发送模拟输入事件,或者截取它的屏幕,并存储在电脑上。Monkeyrunner工具的主要目的是通过运行单元测试套件在功能和框架级别上测试应用程序和设备,当然也可以将其用于其它目的。 Monkeyru

u013234805的专栏 1160

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android之monkeyrunner的用法

#coding:UTF-8 #import monkeyrunner module from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as md import sys import time #connetct your device d...

qq_24883353的博客 315

Android--MonkeyRunner的基本使用

先说下背景:DQA总会测出一些难以重现的bug,经常出现“有时出现”、“偶尔出现”等字眼,这种问题真是一万个草泥马跑过啊.....。你不能逮着DQA的人问怎么出现的啊,如何才能出现,一般情况下你得到的回答都是“它就是出现了.....”。好吧,我也不想就那么傻傻的在屏幕上点啊点啊点的,这还不如炒我鱿鱼呢,这种机械的重复的事情应该要从我们这苦逼的程序员手中解除才对。不扯淡了,直入主题:

sd_zhuzhipeng的专栏 1888

Android测试monkeyRunner

monkeyrunner的官方文档: https://developer.android.com/studio/test/monkeyrunner monkeyrunner脚本可以执行截图操作 具体执行步骤: 进入monkeyrunner.bat的文件夹 D:\android_sdk\tools\bin 执行dos命令 monkeyrunner C:\Us...

weixin_30488085的博客 267

Android自动化测试之monkeyrunner

前言: 最近开始研究Android自动化测试方法,对其中的一些工具、方法和框架做了一些简单的整理,其中包括android测试框架、CTS、Monkey、Monkeyrunner、benchmark、其它test tool等等。因接触时间很短,很多地方有不足之处,希望能和大家多多交流。 一、什么是monkeyrunner monkeyrunner工具提供了一个API,使用此API写出的

andy_android的专栏 1814

android自动化测试之MonkeyRunner使用实例(三)

一、使用CMD命令打开模拟器 运行monkeyrunner之前必须先运行相应的模拟器或连上设备,不然monkeyrunner无法连接设备。 1.1  用Elipse打开Android模拟器或在CMD中用Android命令打开模拟器。 1.2  这里重点讲一下在CMD中用Android命令打开模拟器 命令:emulator -avd test (注意:test为虚拟设备的名称

记录那点滴的改变的专栏 1万+

使用Monkeyrunner进行Android自动化的总结

使用Android自动化的方式,不仅可以用来对Android APP进行自动化测试,同样可以用来进行一些其他非常有意思的自动化任务.常用的自动化工具有Monkeyrunner, Robotium, Appium等.Monkeyrunner是Android自带的自动化测试工具,允许用户对Android设备的UI界面进行元素提取,执行touch和drag等操作,配合HierarchyViewer等模块可以非常方便地进行自动化操作.

icetime17的专栏 3405
上一篇: ios UIButton属性大全
下一篇: scrapy 环境搭建
androidWorkor
博客等级 码龄14年 17粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值