Monkeyrunner“拖动”命令使用错误的坐标?这是一个错误吗?

我正在探索Monkeyrunner脚本环境,测试各种事件以确保我能够充分模拟我的应用程序。具体来说,我对“拖动”功能中使用的坐标有疑问。 连接Monkeyrunner但没有应用程序运行(即,只是坐在主屏幕上),输入以下命令将模仿左右“滑动”事件,将一个主屏幕向左移动。
device.drag((100,400),(500,400),0.15,5)
这很好用。 这个命令,然后应该产生相反方向的滑动...
device.drag((500,400),(100,400),0.15,5)
......但事实并非如此。 但这样做:
device.drag((400,400),(100,400),0.15,5)
为了进一步测试这个,我下载了“MagicMarker”应用程序。通过这种方式,我可以准确地看到这些不同触摸事件发生的位置显然它不会让我截取屏幕截图,除非我使用自己的应用程序,所以我只需要描述我在这里看到的内容。希望您可以验证这一点或告诉我我缺少哪一步。 这个命令......
device.drag((100,400),(500,400),0.15,5)
...在屏幕中间从左到右绘制一条水平线。它完全集中在我的摩托罗拉Droid的屏幕上。两个端点都清晰可见,两端都有边距。 这个命令......
device.drag((500,400),(100,400),0.15,5)
...应该是在相反方向(从右到左)绘制的同一条线,向右绘制线偏移100px。第一个端点位于屏幕边缘或完全位于屏幕外。我说不出来。 让我感到困惑的是,坐标看起来并不一致。点(500,400)位于屏幕的垂直中心,如果在左右拖动移动中用作端点,则向右移动一点,但如果用作左右移动的起点,则看起来完全是屏幕外的拖动。 感觉这可能是Monkeyrunner环境中的一个错误。思考?     
已邀请:
这里有2个错误。一个在MonkeyRunner中,另一个在你的代码中。我在Nexus S上测试,屏幕尺寸为480x800。驱动器非常接近这个尺寸我检查它像这样:
print device.getProperty('display.width'), device.getProperty('display.height')
因此,当您向右拖动时,您的最后一段(x = 500)不在屏幕边缘。当框架在拖动结束时获得“up”事件时,它似乎恢复正常。 当您向右拖动时,您的第一个部分将离开屏幕,而框架则不喜欢。由于它在屏幕外显示“向下”事件,因此会删除完成拖动的所有移动事件。 做你这样的拖拽应该工作:
device.drag((100,400),(400,400),0.15,5)
time.sleep(0.5)
device.drag((400,400),(100,400),0.15,5)
MonkeyRunner中的错误是它删除了拖动命令的最后一部分。所以看起来它正在完成屏幕上的阻力,但实际上并非如此。对此的解决方法如下:https://review.source.android.com/21635     

要回复问题请先登录注册