gpt4 book ai didi

android - Monkeyrunner "drag"命令使用不正确的坐标?这是一个错误吗?

转载 作者:行者123 更新时间:2023-11-29 16:24:40 24 4
gpt4 key购买 nike

我正在探索 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环境的一个bug。想法?

最佳答案

这里有 2 个错误。一个在 MonkeyRunner 中,另一个在您的代码中。我正在 Nexus S 上进行测试,屏幕尺寸为 480x800。 Driod 非常接近我这样检查的尺寸:

print device.getProperty('display.width'), device.getProperty('display.height')

因此,当您向右拖动时,最后一段(在 x=500 处)位于屏幕边缘之外。当框架在拖动结束时收到“向上”事件时,它似乎恢复正常。

当您向右拖动时,您的第一段不在屏幕上,框架不喜欢这样。由于它在屏幕外有一个“向下”事件,它会丢弃所有完成拖动的移动事件。

像这样拖动应该有效:

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

关于android - Monkeyrunner "drag"命令使用不正确的坐标?这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5112519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com