Android monkeyrunner - 检查屏幕是否包含图像或特定颜色

ska*_*ris 1 android image-processing adb monkeyrunner genymotion

我有一个Android应用程序,我想自动化/压力测试.我在SCAR Divi中制作了基于图像的自动化脚本,并针对我在Bluestacks上安装的应用程序运行它.我想把它改成Genymotion,因为Bluestacks太慢了.

我已经设置了环境(genymotion +图像,我的app + adb安装并正常工作).我在python中重写了我的脚本并在MonkeyRunner中使用它,但是......

除了发送手势,点击和等待,我错过了图像识别功能.我发现我可以将2个屏幕截图与ImageMagic进行比较,但这不是我需要的.

我需要检查某个按钮,或者至少是否是屏幕上的特定颜色.任何人都可以指出我正确的方向吗?

我真的很感激一些例子:(

gbu*_*dan 5

MonkeyRunner确实提供了相当不错的基于图像的测试方法.我将在下面向您展示如何从当前显示的设备屏幕中获取子图像.然后,您可以保存此子图像和/或与参考图像进行比较

首先,您需要截取设备当前屏幕的屏幕截图

# Take a screenshot
image = device.takeSnapshot()
Run Code Online (Sandbox Code Playgroud)

然后你可以拍一个子图像.例如,该子图像可以是某个屏幕上的按钮,以验证该屏幕上是否存在该按钮.为此,您可以使用以下方法.下面的元组(0,0,50,100)只是一个例子.你应该提供自己的.基本上它是所需子图像的(x,y,w,h).

# Take the sub-image
sub_image = image.getSubImage((0, 0, 50, 100))
Run Code Online (Sandbox Code Playgroud)

在该步骤之后,您可以保存图像和/或与参考图像进行比较.要与参考图像进行比较,您可以执行以下操作:

# Load the reference image for comparison
reference = MonkeyImage.loadFromFile(PATH_TO_REFERENCE_IMAGE)

if not sub_image.sameAs(reference, 0.9):
       print "Images do not match!"
       # do something
Run Code Online (Sandbox Code Playgroud)

0.9是接受程度.如果两个图像匹配90%或更高,则将被视为已通过

希望这可以帮助.如果您遇到任何问题,请告诉我!

  • 看起来它被移动到MonkeyRunner.loadImageFromFile(PATH).显然看起来也没有证件. (2认同)