文档章节

简单的自动化测试小程序(一)

shaula
 shaula
发布于 2016/05/18 18:25
字数 926
阅读 472
收藏 10
点赞 2
评论 0

需求:

                在休眠时唤醒设备,解锁。然后执行拍照、拨打电话、下载数据,执行一个应用(浮点运算、gpu等),在执行20分钟后将其关闭,然后进入休眠。

 

实现:

                因为模拟的是用户操作,所以并不是在自己的应用中实现如上需求描述,而是调用当前系统的现有应用,模拟用户交互。所以就在Activity的onCreate中,直接开启了一个服务,由服务来进行控制,随后将Activity finish()掉。

                服务开始之后就进行状态判定,如果是锁屏的情况下,进行解锁。inKeyguardRestrictedInputMode就可以实现状态判定,如果是在锁屏的情况下,我就发送一个keyevent 26 \\power   间隔1s之后  keyevent 82 \\unlock.              

                随后开启使用startActivity开启相机、拨号、浏览器(如果传递的网址是下载的文件,就可以直接走浏览器的下载了)等。这里注意intent要加上Intent.FLAG_ACTIVITY_NEW_TASK 。

                最后设置了一下定时器,在一定时间之后再次启动这个Activity,注意我这里说的是“再次启动Activity"而不是service,这里是根据setRepeating中的参数决定的。其实也可以启动服务。

 

知识点:

               1,event? getevent/sendevent? input keyevent?  

                不打算分析事件机制、源码解析。第一步就是拿着自己的手机adb shell getevent,能看到如/dev/input/event5: 0003 0002 000003bc类似的在滚动输出,点两下触屏,和按键会发现event后面的都在发生变化,但是有一定规律,譬如在滑动触屏的时候,始终是输出的是event1(你的可能是别的),如此一来我们可以确定的是触屏事件是event1,那么是这样么,我们再次输入adb shell getevent -p来查看,找到even1的描述

                        add device 8: /dev/input/event1

                        name:     "goodix-ts"                 

我的这个name还是比较直白的 touch screen,所以还真是这样。同时也可以查看其他的event都对应的是什么设备,譬如我一直滚动的event5是accelerometer。

                至此,我们再来分析一下后面的数据,以触屏事件为例:                        

               adb shell getevent /dev/input/event1  (获取当前触屏事件)

得到                 0001 014a 00000001
                        0003 0035 00000173
                        0003 0036 000003d5
                        0003 0030 0000003b

                这三列分别代表type、code、value,这列数据中就包含你触摸位置的坐标,0x35 是x轴、0x36是y轴。转化为10进制就变成了371,949。(当前我的0x35 max、 0x36 max值与我当前实际分辨率相等,所以没有比例转换的问题)

                使用sendevent可以模拟用户完成一次点击事件。例如下面就是一次完整的点击返回。

               shell@msm8916_32:/ $ sendevent /dev/input/event1 1 158 1
               sendevent /dev/input/event1 1 158 1
               shell@msm8916_32:/ $ sendevent /dev/input/event1 0 0 0
               sendevent /dev/input/event1 0 0 0
               shell@msm8916_32:/ $ sendevent /dev/input/event1 1 158 0
               sendevent /dev/input/event1 1 158 0
               shell@msm8916_32:/ $ sendevent /dev/input/event1 0 0 0
               sendevent /dev/input/event1 0 0 0

                上面的输入太繁琐,好在还有简化点的。

                input tap  200 300     //点击200、300坐标

                input swipe 200 300 1200 300 //由200、300向 1200、300滑动

                input keyevent 3   //home

                input keyevent 4   //back

                不同厂商的keyevent实际上可能有所不同,还请各位同学去framework/native/include/input/KeycodeLables.h中去查看。

                至此,我们就能使用在adb shell中做灭屏,唤醒,点击,滑屏...一系列动作。

                                                                                                            ----to be continued

 

© 著作权归作者所有

共有 人打赏支持
shaula
粉丝 0
博文 4
码字总数 2755
作品 0
朝阳
程序员
开发者眼中最好的 22 款 GUI 测试工具

1.Abbot - Java GUI 测试框架 Abbot是一个基于GUI的简单的Java测试框架,它能够帮助开发者测试Java用户界面。 它提供事件自动生成和验证Java GUI组件,使您能够轻松地启动,探索和控制应用程...

oschina ⋅ 2014/06/06 ⋅ 16

UI 自动化测试--iQuery

在程序界面(UI)自动化测试中,最烦人的就是抓取控件的过程了,要么是程序员忘记在代码里给控件添加自动化测试用的标签;要么就是界面布局经常 变,如果是基于坐标位置抓取的话,一点小变化...

知平软件 ⋅ 2012/08/14 ⋅ 0

Android 自动化测试

前言: 现在Android开发非常红火,Java环境下敏捷开发是不二选择。而敏捷开发都是测试驱动。所以,最近研究了一下Android下的各种自动化测试手段。本文重点在于面上的比较而非点上的细节。时...

yaly ⋅ 2015/04/07 ⋅ 0

「转载」换个角度看手工测试与自动化测试

「转载」换个角度看手工测试与自动化测试 之前,自己也开发过自动化的架构,也有用过testbird这样的自动化测试服务,并做过长期的手工测试,对两者有深刻的思考。简单的总结,自动化完成不了...

kyzg2211 ⋅ 2016/10/20 ⋅ 0

Watij - 面向 Web 的自动化测试工具

简介: 随着应用程序渐渐脱离独立的宿主模型并进入到云中,可靠性和可预测性的测试变得更加重要。在云环境中,有许多 因素是我们无法控制的,因此编写健壮的、经过测试的代码比以往更加迫切。...

IBMdW ⋅ 2011/11/10 ⋅ 0

网站测试自动化系统—系统应该有的功能

在前面几篇文章网站测试自动化系统—基于Selenium和VSTT、数据驱动测试、在测试代码中硬编码测试数据里,大概介绍了编写测试代码的过程。然而光把代码写完了是不够的,自动化测试不仅仅是将原...

技术小美 ⋅ 2017/11/12 ⋅ 0

禅道自动化测试框架1.2发布

大家好,禅道自动化测试框架1.2版本发布了。该版本增加了多语言的支持、windows下面增加了ruby, lua, perl, python等常见脚本的支持,并调整了临时目录的位置和日志的格式。 一、关于ZenTaoA...

炒蚕豆吃蹦豆 ⋅ 2013/05/28 ⋅ 0

自动化测试知识分享

【浅谈自动化的本质】   自动化测试实际就是用程序测试程序。主要还是解决了手工测试的人工维护时间,有效提高了测试效率。 【自动化测试的知识点】   1.了解Javascript, CSS的知识;  ...

白一客 ⋅ 2017/04/10 ⋅ 1

微信小程序聊软件测试

微信小程序上线已经有段时日了,随着刚开始的大家卸载手机APP,到重新下载至手机的过程,并没有多久。用完即走,暂时来看小程序并没有干掉APP。 那么问题来了,作为一个软件工程师,关注的点...

白一客 ⋅ 2017/04/20 ⋅ 1

超好用!5款开源的移动自动化测试工具

如今,移动应用在企业的地位越来越重要,消费者对移动设备的要求也越来越高。为适应这一需求,测试团队必须在移动设备推出市场之前,对其性能进行一系列的评估和测试。然而,这是一个既耗时又...

达尔文 ⋅ 2016/11/11 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win环境下jdk7与jdk8共存配置

1.jdk安装包 jdk安装包 安装步骤略 2.jdk等配置文件修改 在安装JDK1.8时(本机先安装jdk1.7再安装的jdk1.8),会将java.exe、javaw.exe、javaws.exe三个文件copy到了C:\Windows\System32,这...

泉天下 ⋅ 12分钟前 ⋅ 0

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 46分钟前 ⋅ 0

python3中报错的解决方法(长期更新)

1、ImportError: No module named ‘DjangoUeditor’ 出错原因:安装DjangoUeditor库适用于python2,需要下载适用python3的 下载地址:https://github.com/twz915/DjangoUeditor3 2、python3......

xiaoge2016 ⋅ 51分钟前 ⋅ 0

数据结构与算法之双向链表

一、双向链表 1.双向链表的结点结构 typedef struct DualNode{ ElemType data; struct DualNode *prior; // 前驱结点 struct DualNode *next; // 后继结点}DualNode, *DuL...

aibinxiao ⋅ 今天 ⋅ 0

五大最核心的大数据技术

大数据技术有5个核心部分,数据采集、数据存储、数据清洗、数据挖掘、数据可视化。关于这5个部分,有哪些核心技术?这些技术有哪些潜在价值?看完今天的文章就知道了。 大数据学习群:7165810...

董黎明 ⋅ 今天 ⋅ 0

PhpStorm 头部注释、类注释和函数注释的设置

首先,PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes下设置即可,其中方法的默认是这样的: /**${PARAM_DOC}#if (${TYPE_HINT} != "v...

nsns ⋅ 今天 ⋅ 0

spring.net AOP

http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html https://www.cnblogs.com/wujy/archive/2013/04/06/3003120.html AOP系列(一)——ProxyFactoryObject 显式创......

whoisliang ⋅ 今天 ⋅ 0

【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub

注意:Win7 与 Win10 的版本存在差异,Win7 版本使用 Docker Quickstart Terminal 进入控制台,Win10下面直接用管理员权限打开控制台或者 PowerShell 即可;另外 Win7 下面只能访问 C盘,/ap...

HAVENT ⋅ 今天 ⋅ 0

pom.xml出现web.xml is missing ...解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This...

源哥L ⋅ 今天 ⋅ 0

js时间戳与日期格式之间相互转换

1. 将时间戳转换成日期格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己...

Jack088 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部