MonkeyRunner:确定MonkeyDevice touch命令坐标的简便方法?

时间:2012-02-03 20:15:51

标签: android testing monkeyrunner

我已经开始创建一个MonkeyRunner脚本了。这没关系,但每当我添加一个MonkeyDevice :: touch命令时,我都必须通过反复试验来确定输入坐标。基本上我想我想触摸的坐标,看看那些坐标是否导致按钮触摸我正试图测试。这有效,但这是一个缓慢的过程。无论如何确定UI控件的坐标,可能来自布局XML文件?

7 个答案:

答案 0 :(得分:7)

我找到了怎么做。使用Eclipse中的Pixel Perfect视图来确定x& UI元素的y坐标。这是一个快速概述: 1)Eclipse必须运行 2)您的Android设备必须连接(通过ADB的真实设备或模拟器) 3)运行层次结构查看器(在/ tools中) 4)选择“检查屏幕截图” Pixel Perfect视图将自动启动。只需将十字准线放在UI元素上即可。 x和y坐标以及RGB值显示在下面。

以下是启动我的网址:http://developer.android.com/guide/developing/debugging/debugging-ui.html#pixelperfect

答案 1 :(得分:4)

这篇文章(monkeyrunner: interacting with views)可能会让您了解如何使用AndroidViewClient获取视图的坐标。

答案 2 :(得分:1)

大多数Android版本都可以在Settings->Developer Options中启用指针位置。启用后,很容易找到(x,y)坐标。

答案 3 :(得分:1)

您还可以使用AndroidSDK>工具文件夹中的HierarchyViewer工具截取当前屏幕的屏幕截图,逐个像素地检查该图像,以获得精确的坐标。

答案 4 :(得分:0)

对于早于Android 4.0的设备,请参阅此版本之后的段落。 Android 4.0及更高版本包括设置 - >开发人员选项 - >指针位置切换,可在设备屏幕顶部切换透明功能区,包括坐标,速度和触摸压力读数,包括当前触摸的滑动轨迹和x / y十字准线地点。这比使用Monkey Recorder等其他方法更容易。在Android 4.2及更高版本中,开发人员选项在“设置”菜单中隐藏,必须通过转到设置 - >关于平板电脑并点击内部版本号七次来启用。人们只能假设Android隐藏了开发者选项,因为它包含了越来越多的影响用户体验的选项,以及玩家使用它或其孩子玩过它的设备制造商的消费者电话/投诉数量。

在可能不包含指针位置切换的旧版本中,Play商店(也称为Android电子市场),开发人员工具上有一个应用程序。请点击此处链接:https://play.google.com/store/apps/details?id=com.ggb.development 它将在设备上显示齿轮图标和标题Dev Tools,并提供AVD(Android虚拟设备)中的Dev Tools所具有的类似功能。这包括开发工具 - >开发设置>无指针位置/指针位置单选按钮切换。设置切换到指针位置提供与Android 4.0及更高版本内置的完全相同的功能。相同的应用程序在Dev Tools->指针位置也有一个更有限的指针设置,它将指针位置限制为仅空白屏幕。

享受!

答案 5 :(得分:0)

使用以下代码创建一个xyz.py文件并连接设备并在终端中运行它,如monkeyrunner xyz.py,然后你将你的设备放入电脑,然后你点击录音机中的任何按钮它会给你坐标,然后探索任何文件,你可以使用坐标。

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device = mr.waitForConnection()
recorder.start(device)

答案 6 :(得分:0)

我找到了adb方法。使用adb shell getevent -l获取事件列表,为ABS_MT_POSITION使用grep(以十六进制获取带有触摸事件的行),最后使用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坐标。