这篇文章是为了实现自动化测试,我主要是为了实现模拟键盘鼠标事件,实现PC控制手机,即PC发送指令控制手机执行相应的动作,例如界面的切换,屏幕的滑动等等。对于Socket编程和Service,我会在另外一篇文章里写明。下面讲的应该可以实现屏幕的滑动:
通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:
* Socket编程:实现PC和Emulator通讯,并进行循环监听
* Service服务:将Socket的监听程序放在Service中,从而达到后台运行的目的。这里要说明的是启动服务有两种方式,bindService和startService,两者的区别是,前者会使启动的Service随着启动Service的Activity的消亡而消亡,而startService则不会这样,除非显式调用stopService,否则一直会在后台运行因为Service需要通过一个Activity来进行启动,所以采用startService更适合当前的情形
* Instrumentation发送键盘鼠标事件:Instrumentation提供了丰富的以send开头的函数接口来实现模拟键盘鼠标,如下所述:
sendCharacterSync(int keyCode) //用于发送指定KeyCode的按键
sendKeyDownUpSync(int key) //用于发送指定KeyCode的按键
sendPointerSync(MotionEvent event) //用于模拟Touch
sendStringSync(String text) //用于发送字符串
注意:以上函数必须通过Message的形式抛到Message队列中。如果直接进行调用加会导致程序崩溃。
对于Socket编程和Service网上有很多成功的范例,此文不再累述,下面着重介绍一下发送键盘鼠标模拟事件的代码:
1.发送键盘KeyCode:
步骤1. 声明类handler变量
private static Handler handler; |
步骤2. 循环处理Message
//在Activity的onCreate方法中对下列函数进行调用
private void createMessageHandleThread(){
//need start a thread to raise looper, otherwise it will be blocked
Thread t = new Thread() {
public void run() {
Log.i( TAG,"Creating handler ..." );
Looper.prepare();
handler = new Handler(){
public void handleMessage(Message msg) {
//process incoming messages here
//在这里是不是不用处理了呢?
}
};
Looper.loop();
Log.i( TAG, "Looper thread ends" );
}
};
t.start();
} |
步骤3. 在接收到Socket中的传递信息后抛出Message
handler.post( new Runnable() {
public void run() {
Instrumentation inst=new Instrumentation();
inst.sendKeyDownUpSync(keyCode);
}
} ); |
2.Touch指定坐标,如下例子即touch point(240,400)
Instrumentation inst=new Instrumentation();
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 240, 400, 0));
inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 240, 400, 0)); |
3.模拟滑动轨迹
将上述方法中间添加 MotionEvent.ACTION_MOVE
分享到:
相关推荐
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
总的来说,模拟Android键盘鼠标事件涉及到网络通信、后台服务和UI操控等多个层面,通过结合Socket、Service和Instrumentation,我们可以实现对Android设备的远程控制或自动化测试,极大地扩展了Android应用的潜力。
### Appium进行移动端自动化测试详解 #### 一、官方自动化测试工具 在开始介绍Appium之前,我们先简要了解一下Android和iOS平台官方提供的自动化测试工具。 **Android平台官方自动化测试工具:** - **单元测试**...
在Android平台上,自动化测试是确保应用质量和性能的关键环节。本文将详细介绍几个常见的自动化测试框架,包括Monkey、MonkeyRunner、UIAutomator、Robotium以及Appium,帮助开发者理解它们的功能、优缺点及其适用...
TMTS的核心是基于Android的Instrumentation机制,能够支持发布版本的测试,同时也提供了对内嵌WebView的自动化支持。 在原始设计需求方面,TMTS致力于解决以下问题: 1. **无需专门为自动化测试打包**:TMTS旨在对...
【Android自动化测试设计与实现】 随着移动设备的快速发展,尤其是Android系统的广泛应用,自动化测试成为了提高产品质量和缩短测试周期的关键技术。Android自动化测试旨在减少手动测试的繁琐和错误,提高测试覆盖...
3. **Instrumentation测试**:Android的Instrumentation测试框架允许对应用的完整生命周期进行控制,包括启动、暂停、恢复和销毁等操作,通常用于集成测试。 4. **Mockito与Android Mock**:Mockito是一个流行的...
在实际使用中,开发者可以结合Robotium和`android-junit-report`库来实现自动化测试和测试报告的生成。首先,通过Robotium编写测试脚本,然后利用`android-junit-report`库将测试结果转化为易于阅读的HTML报告,这样...
通过以上这些知识点,我们可以了解到Robotium框架在Android自动化测试中的强大功能以及如何通过搭建测试环境、解析Android UI和利用Robotium-solo API来实现更加深入的自动化测试。掌握这些知识,对于提升Android...
本文将深入分析Android自动化测试框架及其层次关系,并探讨基于JUnit和instrumentation的Android自动化测试框架实现技术,同时还将涉及集成Hudson进行自动化测试的方法。 首先,Android是一个完全开放的手机平台,...
总结来说,Android的Instrumentation测试框架是Android自动化测试的核心,它提供了强大的控制和监视能力,涵盖了从基本的单元测试到复杂的UI测试的各个方面。理解并熟练运用Instrumentation,可以帮助开发者编写出...
最后,对于Android自动化测试的全系列课程,包括了多个内容方向,例如系统级白盒测试及自动化测试集成、Monkey、MonkeyRunner、UiAutomator和appium等,从核心理念、操作指南到实战技巧,再到电量测试、弱网测试和...
Android自动化测试是提升应用质量与开发效率的关键环节。本文将深入探讨Android自动化测试的不同方面,包括测试工具、分类、实践以及代码覆盖率。 首先,我们来看看常见的Android自动化测试工具。Monkey、...
手机自动化测试原理主要涉及到PC控制端、手机终端的agent、通信接口以及自动化测试框架的构建。测试过程中,PC上的控制端通常使用特定的测试工具,如Appium、Selendroid等,通过串口、USB或无线连接(如Wi-Fi、蓝牙...
Instrumentation组件则提供了一组仪表盘控件,包括各种模拟和数字仪表,如指针式表盘、数字显示屏、滑块等,这些控件常用于监控或控制应用中的数值状态。开发者可以利用这些控件创建实时数据监控界面,提升应用程序...
**Robotium的优势**:通过将原本手动执行的测试自动化,可以大大提高测试效率和准确性,减少人工错误。 #### 五、单元测试 **单元测试简介**:单元测试是一种针对代码模块进行的独立测试方法,通常在开发阶段就...
本压缩包“行业分类-设备装置-基于android平台的自动化测试方法及测试工具.zip”提供了关于如何在Android平台上进行自动化测试的方法和工具的详细资料,特别是针对设备装置的测试。 首先,我们来了解一下自动化测试...
1. **单元测试**:Android平台整合了JUnit测试框架和Instrumentation机制,支持针对单一应用的单元测试。开发者可以编写测试用例,确保代码模块的正确性。 2. **集成测试**:Robotium是一个流行的自动化集成测试...