我已经开始创建 MonkeyRunner 脚本。这没问题,但是每当我添加 MonkeyDevice::touch 命令时,我必须通过反复试验来确定输入坐标。基本上我猜想我想触摸的坐标,看看这些坐标是否会导致我试图测试的按钮触摸。这行得通,但这是一个缓慢的过程。有没有办法确定 UI 控件的坐标,也许来自布局 XML 文件?
7 回答
我找到了怎么做。使用 Eclipse 中的 Pixel Perfect 视图来确定 UI 元素的 x 和 y 坐标。这是一个快速概述:1)Eclipse 必须正在运行 2)您的 Android 设备必须连接(通过 ADB 的真实设备或模拟器) 3)运行层次结构查看器(在 /tools 中) 4)选择“检查屏幕截图” Pixel Perfect 视图将自动启动。只需将十字准线放在 UI 元素上。x 和 y 坐标以及 RGB 值显示在下方。
这是让我开始的 URL:http: //developer.android.com/guide/developing/debugging/debugging-ui.html#pixelperfect
这篇文章(monkeyrunner:interacting with views)可能会让您了解如何使用AndroidViewClient获取 View 的坐标。
您还可以使用 AndroidSDK>tools 文件夹中的 HierarchyViewer 工具来截取当前屏幕的屏幕截图并逐像素检查该图像以获得准确的坐标。
大多数 Android 版本都可以在Settings->Developer Options
. 启用后,很容易找到(x,y)
坐标。
对于 Android 4.0 之前的设备,请参阅本节之后的段落。Android 4.0 及更高版本包括设置-> 开发人员选项-> 指针位置切换,它可以切换设备屏幕顶部的透明色带,其中包含坐标、速度和触摸压力读数,包括当前触摸位置的滑动轨迹和 x/y 十字准线。这比使用 Monkey Recorder 等替代方法和其他方式要容易得多。在 Android 4.2 及更高版本中,开发人员选项从设置菜单中隐藏,必须通过转到设置->关于平板电脑并点击内部版本号七次来启用。
在可能不包含指针位置切换的旧版本中,Play 商店(又名 Android 市场)上有一个应用程序开发者工具。请参阅此处的链接:https: //play.google.com/store/apps/details?id=com.ggb.development 它将在设备上显示一个齿轮图标和标题 Dev Tools,并提供与 Dev Tools 类似的功能在一个 AVD(Android 虚拟设备)中有。这包括 Dev Tools ->Development settings>No Pointer Location/Pointer Location 单选按钮切换。将该切换设置为指针位置可提供与 Android 4.0 及更高版本内置的完全相同的功能。相同的应用程序在 Dev Tools->Pointer Location 处也有一个更有限的指针设置,它将指针位置限制为仅空白屏幕。
享受!
我找到了一种 adb 方法。用于adb shell getevent -l
获取事件列表,grep for ABS_MT_POSITION
(获取十六进制触摸事件的行),最后使用 awk 获取相关的十六进制值,将它们去除零并将十六进制转换为猴子跑步者使用的十进制。这一切都通过以下方式完成:
adb shell getevent -l | grep ABS_MT_POSITION --line-buffered | awk '{a = substr($0,54,8); sub(/^0+/, "", a); b = sprintf("0x%s",a); printf("%d\n",strtonum(b))}'
只有当您按下设备时,才会在终端中连续打印 x 和 y 坐标。
使用以下代码创建一个 xyz.py 文件并连接设备并在终端中运行它,如 monkeyrunner xyz.py,然后您将在 pc 中获取您的设备,然后您单击记录器中的任何按钮,它会给您坐标,之后探索它到任何文件,你可以使用坐标。
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device = mr.waitForConnection()
recorder.start(device)