`

Android自动化测试初探: 模拟键盘鼠标事件(Socket+Instrumentation实现)

 
阅读更多

这篇文章是为了实现自动化测试,我主要是为了实现模拟键盘鼠标事件,实现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单元测试初探——Instrumentation

    学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...

    浅析Android 模拟键盘鼠标事件

    总的来说,模拟Android键盘鼠标事件涉及到网络通信、后台服务和UI操控等多个层面,通过结合Socket、Service和Instrumentation,我们可以实现对Android设备的远程控制或自动化测试,极大地扩展了Android应用的潜力。

    appium做移动端自动化测试

    ### Appium进行移动端自动化测试详解 #### 一、官方自动化测试工具 在开始介绍Appium之前,我们先简要了解一下Android和iOS平台官方提供的自动化测试工具。 **Android平台官方自动化测试工具:** - **单元测试**...

    Android 自动化测试框架

    在Android平台上,自动化测试是确保应用质量和性能的关键环节。本文将详细介绍几个常见的自动化测试框架,包括Monkey、MonkeyRunner、UIAutomator、Robotium以及Appium,帮助开发者理解它们的功能、优缺点及其适用...

    测试自动化实践 淘宝Android UI自动化测试的探索 共23页.pptx

    TMTS的核心是基于Android的Instrumentation机制,能够支持发布版本的测试,同时也提供了对内嵌WebView的自动化支持。 在原始设计需求方面,TMTS致力于解决以下问题: 1. **无需专门为自动化测试打包**:TMTS旨在对...

    基于Android的自动化测试的设计与实现

    【Android自动化测试设计与实现】 随着移动设备的快速发展,尤其是Android系统的广泛应用,自动化测试成为了提高产品质量和缩短测试周期的关键技术。Android自动化测试旨在减少手动测试的繁琐和错误,提高测试覆盖...

    深入理解Android自动化测试学习下载

    3. **Instrumentation测试**:Android的Instrumentation测试框架允许对应用的完整生命周期进行控制,包括启动、暂停、恢复和销毁等操作,通常用于集成测试。 4. **Mockito与Android Mock**:Mockito是一个流行的...

    Android自动化测试

    在实际使用中,开发者可以结合Robotium和`android-junit-report`库来实现自动化测试和测试报告的生成。首先,通过Robotium编写测试脚本,然后利用`android-junit-report`库将测试结果转化为易于阅读的HTML报告,这样...

    Android自动化测试之Robotium--进阶操作.pdf

    通过以上这些知识点,我们可以了解到Robotium框架在Android自动化测试中的强大功能以及如何通过搭建测试环境、解析Android UI和利用Robotium-solo API来实现更加深入的自动化测试。掌握这些知识,对于提升Android...

    基于Android的自动化测试的设计与实现【PDF】

    本文将深入分析Android自动化测试框架及其层次关系,并探讨基于JUnit和instrumentation的Android自动化测试框架实现技术,同时还将涉及集成Hudson进行自动化测试的方法。 首先,Android是一个完全开放的手机平台,...

    Android自动化测试之Instrument深入研究.pdf

    总结来说,Android的Instrumentation测试框架是Android自动化测试的核心,它提供了强大的控制和监视能力,涵盖了从基本的单元测试到复杂的UI测试的各个方面。理解并熟练运用Instrumentation,可以帮助开发者编写出...

    Android自动化测试之Robotium--基础操作

    最后,对于Android自动化测试的全系列课程,包括了多个内容方向,例如系统级白盒测试及自动化测试集成、Monkey、MonkeyRunner、UiAutomator和appium等,从核心理念、操作指南到实战技巧,再到电量测试、弱网测试和...

    深入浅出Android 自动化测试1

    Android自动化测试是提升应用质量与开发效率的关键环节。本文将深入探讨Android自动化测试的不同方面,包括测试工具、分类、实践以及代码覆盖率。 首先,我们来看看常见的Android自动化测试工具。Monkey、...

    手机自动化测试原理

    手机自动化测试原理主要涉及到PC控制端、手机终端的agent、通信接口以及自动化测试框架的构建。测试过程中,PC上的控制端通常使用特定的测试工具,如Appium、Selendroid等,通过串口、USB或无线连接(如Wi-Fi、蓝牙...

    DevComponents.DotNetBar9.0 + TreeGX + Instrumentation

    Instrumentation组件则提供了一组仪表盘控件,包括各种模拟和数字仪表,如指针式表盘、数字显示屏、滑块等,这些控件常用于监控或控制应用中的数值状态。开发者可以利用这些控件创建实时数据监控界面,提升应用程序...

    Android自动化测试可行性途径分析.pdf

    **Robotium的优势**:通过将原本手动执行的测试自动化,可以大大提高测试效率和准确性,减少人工错误。 #### 五、单元测试 **单元测试简介**:单元测试是一种针对代码模块进行的独立测试方法,通常在开发阶段就...

    行业分类-设备装置-基于android平台的自动化测试方法及测试工具.zip

    本压缩包“行业分类-设备装置-基于android平台的自动化测试方法及测试工具.zip”提供了关于如何在Android平台上进行自动化测试的方法和工具的详细资料,特别是针对设备装置的测试。 首先,我们来了解一下自动化测试...

    Android应用的多设备自动化测试实现.pdf

    1. **单元测试**:Android平台整合了JUnit测试框架和Instrumentation机制,支持针对单一应用的单元测试。开发者可以编写测试用例,确保代码模块的正确性。 2. **集成测试**:Robotium是一个流行的自动化集成测试...

Global site tag (gtag.js) - Google Analytics