android 查看包名 脚本,Monkeyscript---获取包名主界面名和位置坐标

一、monkey随机事件有三类:点击、输入、手势

二、Monkeyscript难点:如何获取坐标

三、Monkeyscript API:

1、轨迹球(手势)事件:

DispatchTrackball(long downTime,long eventTime,int action, float x,float y,float pressure,float size,int meteState,float xPrecision,float yPrecision,int device,int edgeFlags)

long downTime:键最初按下时间

long eventTime:事件发生时间

int action: 动作:action_down = 0按下,action_up=1弹起,action_multiple=2

float x:X坐标

float y:Y坐标

float pressure:当前事件的压力,范围0~1

float size:触摸近似值。范围0~1

int metaState:当前按下的meta键的标识

float xPrecision:X坐标精确值

float yPrecision:Y坐标精确值

int device:事件来源,范围0~x,0标识不来自物理设备

int edgeFlages:坐标是否超出屏幕范围

2、输入字符串(输入)事件:DispatchString(String text)

如:DispatchString(adf23实地呵呵)

3、点击事件:

DispatchTrackball(long downTime,long eventTime,int action, float x,float y,float pressure,float size,int meteState,float xPrecision,float yPrecision,int device,int edgeFlags)

4、启动应用:LaunchActivity(String pkg_name,String cl_name)

pkg_name:应用所在包名

cl_name:应用主界面名

如:LaunchActivity(com.andrioid.browser,com.andrioid.browser.BrowserActivity)

启动应用BrowserActivity

5、等待事件:UserWait(3000) 单位:毫秒,等待3秒

6、按下键值:DispatchPress(int keycode)

常用键值:手机按键0~9-------键值:7~16

按键A~Z------键值:29~54

拨号键---------键值:5

挂断键---------键值:6

HOME键-----3

音量增键------24

音量减键------25

如:DispatchPress(3)即为短按home键

7、长按键值:LongPress(int keycode)

8、发送键值:DispatchKey(long downTime,long eventTime,int action,int code,int repeat,int metaState,int device,int scancode)

long downTime:键最初按下时间

long eventTime:事件发生时间

int action:动作:action_down = 0按下,action_up=1弹起,action_multiple=2

int code:键值(参考第6条)

int repeat:重复次数

int metaState:当前按下的meta键的标识

int device:事件发生的设备id

int scancode:上报点信息

9、开关软键盘:DispatchFlip(boolean keyboardOpen)

true为打开;false为关闭

四、脚本编写:

1、编写规范:

(1) 头语句+事件脚本

① 头语句:固定格式

type = raw events(脚本类型,一般不用更改)

count = 10(执行脚本次数)

speed = 1.0(执行速率,改动无影响,也可通过monkey命令行指定)

stat data >>

② 事件脚本:

1) 启动应用(如:众托帮)LaunchActivity(String pkg_name,String cl_name)

a. 如何获取pkg_name包名:

adb shell pm  list packages

包名为:com.zhongtuobang.android

d6489975fedcb003ebbb98705b047dd4.png

b. 如何获取cl_name应用主界面名:

adb logcat -c

adb logcat ActivityManager:I *:s

然后手动在手机上面打开app客户端

即:应用主界面名:com.zhongtuobang.android/.ui.activity.splash.SplashActivity

8580bc34874931154eda8b6f65bc9ac1.png

2) 如何获取坐标,步骤如下:

方案一:

a. 打开app(如:众托帮)

b. adb shell getevent(getevent是安卓下的一个工具,模拟多种按键和触屏操作,产生raw event,再经过event hub处理产生gesture事件)

c. 点击app中“我的”区域:

33700c94ddae5f37d79a971a93154d25.png

备注:

(1)/dev/input/event4: 0003 0000 00000028

|           |       |         |

|           |       |         |

devicename   type  code  value

(2)getevent中type、code、value的定义可以查看kernel/include/linux/input.h,三者互相影响

① 对于type的定义:

# define EV_SYN0000同步事件——表示一组完整事件已经完成

ce35b0bd18ca47f8c883bba182a555a4.png

# define EV_KEY0001keyboard键盘事件

#define EV_REL          0002相对坐标

#define EV_ABS      0003绝对坐标

#define EV_MSC       0004

#define EV_SW            0005

#define EV_LED           0011

#define EV_SND           0012

。。。。。。

② 对于code的定义:

1) type值为# define EV_SYN      0000,其code值为:

# define SYN_REPORT 0

# define SYN_CONFIG 1

# define SYN_MT_REPORT 2

2) type值为#define EV_ABS      0003,其code值为:

# define ABS_X 0000 绝对坐标X

# define ABS_Y 0001 绝对坐标Y

# define ABS_Z 0002 绝对坐标Z

# define ABS_RX 0003

# define ABS_RY 0004

# define ABS_RZ 0005

。。。

# define ABS_MT_TOUCH_MAJOR 0030    主接触面的长轴:若屏幕分辨率为X*Y,那么       ABS_MT_TOUCH_MAJOR最大值为sqrt(X`2+Y`2),即为:平方和的正数开根

# define ABS_MT_WIDTH_MAJOR 0032

# define ABS_MT_POSITION_X 0035 椭圆中心绝对坐标X

# define ABS_MT_POSITION_Y 0036 椭圆中心绝对坐标Y

。。。

当0x30和0x32出现时,表示有触屏事件发生;

当0x35和0x36出现时,表示实际触屏时的绝对坐标X和Y;

通过getevent获取到的值为16进制。

847c443c5d8e5a64180257ad54aa12e8.png

此时绝对坐标(X,Y)为(28e,4de)

(3)若对于不同分辨率的设备,如何获取绝对坐标点,步骤如下:

① adb shell getevent -p

② 发现命令adb shell getevent时可以看到device name为:/dev/input/event6,即设备号为:adb device 3

18176ae39dbb6700cdc457e8327e4fc7.png

③ 显示了code值得范围:当code为0035和0036,对应本机x最小值0,最大值720;对应y最小值0,最大值1280;

④ 获取手机设备的分辨率:720x1280

adb shell wm size

fed1c6ca3413e314cc91ebc780f2ba8b.png

⑤ 通过Android VNCServer源码,得出公式为:

计算时要将十六进制全部转化为十进制:

相对坐标X=(x - xmin)*(getevent中的十进制值 * 分辨率宽度)/ (0035max - 0035min)

相对坐标Y=(y - ymin)*(getevent中的十进制值 * 分辨率高度)/(0036max - 0036min)

方案二:

直接打开手机设置 →打开 开发者选项 → 打开指针位置,手指点击屏幕即可显示坐标

hibernate 获取实体的表名、主键名、列名(转载+修改)

package com.escs.utils; import java.util.Iterator; import org.hibernate.cfg.AnnotationConfiguration; ...

Android Apk获取包名和Activity名称

一.使用aapt(Android Asset Packaging Tool)工具获取: 1.配置Android环境: a.添加build-tools/android路径到系统环境变量的中Path中,注 ...

monkeyrunner_获取apk的包名和activity名

一.使用adb获取单个apk的包名和Activity名称: 1.配置adb环境 a. 我的电脑点击右键-属性-高级-环境变量; b.  环境变量中新建PATH,变量值输入adb.exe工具所在目录; ...

【Monkey】Monkey获取包名的方式

获取包名的方式: 1.有源码:查看AndroidManifest.xml 2.只有apk: 2.1 aapt dump xmltree ColaBox.apk AndroidManifest.xml ...

二.第一个自动化demo,打开APP-如何获取包名和activity。(真机)

环境配置成功后,我们就可以进行第一个自动化测试了.用真机则不需要安装安卓模拟器.以一个简单的打开APP为例. 一.获取包名和activtity      启动一个app,我们需要知道它的平台.版本号. ...

Android 获取包名,版本信息

Android 获取包名,版本信息及VersionName名称     private String ge ...

手机App测试如何获取包名的入口【两种方式】

在进行手机APP测试的时候经常要获取包名.那么何为包名呢?简单来说其实就是手机APP的安装apk文件的名称,每个手机APP(软件)的包名都是唯一的. 那么我们怎样来获取包名以及包名的入口呢? 方法一: ...

快速获取Android应用包名和Activity名

一.获取包名 方法1: 先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root). ①在android设备上点 ...

Appium Android 获取包名和 Activity 的几种方法 (转)

本文档主要记录“获取包名和 Activity 的方法”,用于自动化测试时启动APP.以下方法主要来源于网络和社区同学的贡献,特此感谢! 1. 方法一: pm list package查看包名 adb ...

随机推荐

Block产生的内存泄露,以及解决方法

前言: 在ARC(自动引用技术)前,Objective-c都是手动来分配释放 释放 计数内存,其过程非常复杂. ARC技术推出后,貌似世界和平了很多,但是其实ARC并不等同于Java或者C#中的垃圾回 ...

LINQ 多条件写法

源代码: string depAll = (ddl_dep1.SelectedValue == "") ? "" : ddl_dep1.SelectedValu ...

SQL Server 2008 忘记sa密码的解决办法

由于某些原因,sa和windows验证都不能登录 sql server,可以用独占模式,修改sa密码先在服务管理器停止Sql Server服务,然后打开命令行,进入 SQL Server安装目录,进入 ...

16进制的颜色怎么转换为我们iOS所用的RGB颜色

这个我们就是可以直接宏定义到 我们的工程中,这样我们就可以用我们UI小妹,给我们16进制的颜色表示,愉快的编程了... #define UIColorFromRGB(rgbValue) [UIColo ...

App专项测试之弱网测试

转载 https://blog.csdn.net/TestingGDR/article/details/83059415

python文件

目录 1. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 2. 文件的基本操作 2.1 操作文件的套路 2.2 操作文件的函数/方法 2.3 read 方法 -- 读取文件 2.4 打 ...

【ELK】之Centos6.9_x64安装elasticsearch6.2.1

1.下载elasticsearch6.2.1 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1 ...

mariadb 重置密码

1. sudo身份打开 /etc/mysql/my.cnf 在[mysqld]节点下增加如下代码: skip-grant-tables #忽略密码授权 2. 杀掉mysql进程,重启mariadb,这 ...

开源项目kcws代码分析--基于深度学习的分词技术

http://blog.csdn.net/pirage/article/details/53424544 分词原理 本小节内容参考待字闺中的两篇博文: 97.5%准确率的深度学习中文分词(字嵌入+Bi ...

C#中const 详细分析与说明

const是一个c语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值