【UiAutomator学习笔记】2. UiDevice API 详细介绍(1/2)

UiDevice类介绍

  • UiDevice功能

    • 获取设备信息:屏幕的旋转方向,屏幕大小,分辨率,亮灭屏状态等
    • 执行设备级的操作:强制设备横竖屏,按压屏幕,按键,坐标操作,滑动,拖拽,灭屏唤醒,截图
    • 监听器功能,用于处理脚本被中断
  • UiDevice为单例模式,获取实例的方式有两种
    • UiDevice.getInstance().pressHome(); //推荐使用
    • getUiDevice().pressHome(); //在其它地方封装方法被调用时,会出现空指针异常
      • 例如下列代码在Demo2中定义了一个press方法

        public class Demo2 extends UiAutomatorTestCase {
            public void press() {
                getUiDevice().pressMenu();         sleep(2000);
                getUiDevice().pressHome();
            }
        }
      • 在Demo1中进行调用Demo2的press方法
        public void testDevice() {
            Demo2 demo2 = new Demo2();
            demo2.press(); //会抛出空指针异常!!!!!!
        }

按键与KeyCode使用

手机常见按键

  1. HOME
  2. MENU
  3. BACK
  4. VOLUME_UP
  5. VOLUME_DOWN
  6. RECENTAPPS
  7. POWER
  8. DPAD //上下左右键

按键API说明

返回值 方法名 描述
boolean pressBack() 模拟短按返回back键
boolean pressDPadCenter() 模拟按轨迹球中点按键
boolean pressDPadDownr() 模拟按轨迹球向下按键
boolean pressDPadLeft() 模拟按轨迹球向左按键
boolean pressDPadRight() 模拟按轨迹球向右按键
boolean pressDPadUp() 模拟按轨迹球向上按键
boolean pressDelete() 模拟短按delete键
boolean pressEnter 模拟短按回车键
boolean pressHome() 模拟短按HOME键
boolean pressKeyCode(int keyCode, int metaState) 模拟短按键盘代码keycode
boolean pressKeyCode(int keyCode) 模拟短按键盘代码keycode
boolean pressMenu() 模拟短按Menu键
boolean pressRecentApps() 模拟短按最近使用程序
boolean pressSearch() 模拟短按搜索键

KeyCode 键盘映射码

  1. KeyEvent:里面的常量保存所有的键盘映射码
  2. MetaKey:辅助功能键
    • Alt
    • Shift
    • Caps_Lock
激活状态 metaState
base meta_key未被激活 0
caps shift或caps_lock被激活时 1
fn alt被激活 2
caps_fn alt, shift或caps_lock同时被激活时 3

实例

public void testPress() {
    UiDevice.getInstance().pressHome();

    UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A); //输入小写字母a
    UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_B); //输入小写字母b
    UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_C); //输入小写字母c

    UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A, 1); //输入大写字母a
    UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_B, 1); //输入大写字母b
    UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_C, 1); //输入大写字母c
}
时间: 2025-01-20 06:41:21

【UiAutomator学习笔记】2. UiDevice API 详细介绍(1/2)的相关文章

1.UiDevice API 详细介绍

1.UiDevice按键与keycode使用 返回值 方法名 说明 boolean pressBack() 模拟短按返回back键 boolean pressDPadCenter() 模拟按轨迹球中点按键 boolean pressSPadDown() 模拟轨迹球向下按键 boolean pressDPadLeft() 模拟轨迹球向左按键 boolean pressDPadRight() 模拟轨迹球向右按键 boolean pressDPadUp() 模拟轨迹球向上按键 boolean pres

Linux程序设计学习笔记----网络通信编程API及其示例应用

转载请注明出处, http://blog.csdn.net/suool/article/details/38702855. BSD Socket 网络通信编程 BSD TCP 通信编程流程 图为面向连接的Socket通信的双方执行函数流程.使用TCP协议的通信双方实现数据通信的基本流程如下 建立连接的步骤 1.首先服务器端需要以下工作: (1)调用socket()函数,建立Socket对象,指定通信协议. (2)调用bind()函数,将创建的Socket对象与当前主机的某一个IP地址和TCP端口

java SE学习之线程同步(详细介绍)

       java程序中可以允许存在多个线程,但在处理多线程问题时,必须注意这样一个问题:               当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量时,那么这个程序是该如何执行?              也就是先访问这个变量还是先修改这个变量.              在学习线程的这段时间里,我也一直被这个问题所困扰!但是今天终于算是搞明白了.              于是将这些好的列子一一列举出来,分享一下. (1)什么是线程同步 ?      

【web开发学习笔记】Structs2 Result学习笔记(一)简单介绍

Structs2 Result学习笔记(一)简单介绍 问题一 <struts> <constant name="struts.devMode" value="true" /> <package name="resultTypes" namespace="/r" extends="struts-default"> <action name="r1"

ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译

内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View,加载layers,使用弹出窗口,视觉化,与使用窗口小部件.(wtf居然没有分析你想搞事情啊web除了展示难道不应该有()&&*--@) [Mapping and Views] (点击进入我写的章节详细介绍) 最基础的,知道地图和视图的区别,能使用2D和3D地图,对地图的布局有一定的了解,对地图

react-native学习笔记--史上最详细Windows版本搭建安装React Native环境配置

参考:http://www.lcode.org/react-native/ React native中文网:http://reactnative.cn/docs/0.23/android-setup.html#content 1.安装Jdk(最好默认安装路径尽量别改) http://jingyan.baidu.com/article/a24b33cd59b58e19fe002bb9.html http://www.jb51.net/article/36811.htm(三个环境变量都配置)  Ja

NGUI学习笔记(一)UILabel介绍

来个前言: 作为一个U3D程序员,自然要写一写U3D相关的内容了.想来想去还是从UI开始搞起,可能这也是最直观同时也最重要的部分之一了.U3D自带的UI系统,也许略坑,也没有太多介绍的价值,那么从今天开始就记录一下主流的UI插件-NGUI吧. NGUI版本: v3.6.8 学习笔记一 假定大家都已经将ngui导入到了项目中,这里需要注意,插件(.package)的存放路径不能有中文,否则会导致解压失败. 导入之后可以看到几个文件夹咯,Editor,Examples,Resources,Scrip

前端html与css学习笔记总结篇(超详细)

第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 web前端开发的前景展望: 未来IT行业企业需求最多的人才 结合最新的html5抢占移动端的市场 自己创业做老板 随着互联网的普及web开发成为企业的宠儿和核心 web职业发展目标: 第一.梳理知识架构 负责内容的HTML 负责外观的css(层叠样式表) 负责行为的js ps切图 第二.分解目标(起步阶段.提升阶段.成型阶段) 起步阶段: 基本知识的掌握 常用工具的掌

(二)underscore.js框架Utility类API学习以及模型template的详细介绍

本文介绍的是underscore.js提供的Utility Functions. noConflict_.noConflict() Give control of the "_" variable back to its previous owner. Returns a reference to theUnderscore object. 这个函数主要是为了解决underscore.js与其他框架或js名字冲突的问题.我们知道:underscore.js使用全局对象_,如果在unde