文档章节

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

shaula
 shaula
发布于 2016/05/18 18:25
字数 926
阅读 2.1K
收藏 10

码上生花,ECharts 作品展示赛正式启动!>>>

需求:

                在休眠时唤醒设备,解锁。然后执行拍照、拨打电话、下载数据,执行一个应用(浮点运算、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
朝阳
程序员
私信 提问
加载中
请先登录后再评论。
自动化测试 (一) 12306火车票网站自动登录工具

还记得2011年春运,12306火车票预订网站经常崩溃无法登录吗。 今天我们就开发一个12306网站自动登录软件。 帮助您轻松订票 通过前两篇博客Fiddler教程和HTTP协议详解,我们了解了Web的原理....

osc_l5bh1tsd
2018/03/08
2
0
【转】微信小程序实现自动化测试

山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革 “使命感...

osc_w0y1cpjl
2018/05/21
4
0
使用AirtestIDE进行小程序自动化测试

Airtest是网易出的基于图像识别和Poco控件识别的最近非常火的一个ui自动化测试工具,由网易游戏内部工具团队开发并开源,获得谷歌力挺。也是是一个跨平台、多端(Windows、web、android、ios...

osc_9vxdigiw
2019/12/26
2
0
持续集成之单元测试篇——WWH(讲讲我们做单元测试的故事)

文章导航-readme 持续集成之单元测试篇——WWH(讲讲我们做单元测试的故事) 前言 临近上线的几天内非重大bug不敢进行发版修复,担心引起其它问题(摁下葫芦浮起瓢) 尽管我们如此小心,仍不能避...

osc_dos38x1o
2018/10/08
3
0
Python实现性能自动化测试竟然如此简单

一、思考❓❔ 1.什么是性能自动化测试? 性能 系统负载能力 超负荷运行下的稳定性 系统瓶颈 自动化测试 使用程序代替手工 提升测试效率 性能自动化 使用代码模拟大批量用户 让用户并发请求 多...

osc_oupyj5vz
04/16
3
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka快速入门(九)——C客户端

Kafka快速入门(九)——C客户端 一、Librdkafka简介 1、librdkafka简介 librdkafka是C语言实现的Apache Kafka的高性能客户端,提供C++接口。librdkafka专为现代硬件而设计,尝试将内存复制保...

osc_b0i5ef6e
21分钟前
11
0
某二手交易平台大数据平台从 0 到 1 演进与实践

在人口流量红利不再,获客成本越来越高的时代,精益创业、MVP 的概念已经深入人心,精细化运营也是大势所趋,而这些背后本质上都依赖数据化运营,那如何根据现有业务,快速从 0 开始打造一个...

osc_1qix3fyb
22分钟前
10
0
一个屌丝程序猿的人生(一百一十二)

  “喂,林萧。”   电话的另一头想起了欧阳晓的声音,听上去似乎有些冷淡,让林萧不由得心中一紧。   “是我,你在干嘛?”林萧试探的问了一句。   “没干什么,有什么事吗?”   ...

osc_c1kk059r
24分钟前
19
0
flask + pyecharts 搭建新冠肺炎疫情数据可视化交互分析平台:包含疫情数据获取、态势感知、预测分析、舆情监测等任务

该项目是浙江大学地理空间数据库课程作业8:空间分析中,使用 flask + pyecharts 搭建的简单新冠肺炎疫情数据可视化交互分析平台,包含疫情数据获取、态势感知、预测分析、舆情监测等任务 包...

osc_qheq8wav
25分钟前
18
0
如何在Joomla管理面板中访问文件并进行编辑

在本教程中,我们将向您展示如何从站点管理员面板中编辑Joomla模板文件。 1.登录到Joomla管理员面板后,您需要导航至扩展 > 模板部分。 2.在下一个窗口中,再次从左侧列表中选择模板,然后单...

osc_sumf8h95
27分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部