我可以加快MonkeyRunner的takeSnapshot()函数的速度吗?

时间:2019-02-04 08:23:30

标签: android adb monkeyrunner

最近,我发现了Monkeyrunner工具,用于自动执行android操作,测试,宏等所有操作。 就是说,我对takeSnapshot()的速度如此之慢感到震惊。 我正在android模拟器上进行测试,我比较了两种方法-takeSnapshot()和android shell的screencap。

takeSnapshot功能的测试脚本(d-已连接的MonkeyDevice):

start = int(d.getProperty("clock.millis"))
for n in range(100):
    p = d.takeSnapshot()
    print n
stop = int(d.getProperty("clock.millis"))
print "%d" % (stop-start,)

测试shell截图(/ sdcard / tmp是我为消除硬盘延迟而安装的tmpfs文件系统):

start = int(d.getProperty("clock.millis"))
for n in range(100):
    res = d.shell("screencap \"/sdcard/tmp/screen.dump\" && echo \"done\"")
    print n, res
stop = int(d.getProperty("clock.millis"))
print "%d" % (stop-start,)

第一次测试:

99
17945
>>>

第二项测试:

99 done
11118
>>>

让我感到惊讶的是,调用Android Shell实际上比使用内置的Monkey函数要快。我想如果我用sh编写整个基准脚本并在adb shell中运行它会更快... 如果有人可以在这里提出提高MR速度的建议,我将非常高兴。 通常,我需要使用它来检测像素颜色或获取子图片(使用MR)以进行自动化测试。目前,我使用很多ifs在纯sh脚本中编写它,但是我真的想切换到MR和python。我喜欢python。

因此,主要问题是:我可以以某种方式使MonkeyRunner的takeSnapshot()运行得更快吗?或者,也许除了获取完整快照并使用getRawPixel方法之外,还有其他方法可以在工具内获取像素颜色?

我知道速度的差异并没有太大的变化,也许在实际的应用程序测试中不会引起注意,事实本身让我很烦恼-内置函数的运行速度比启动时慢得多一个新的Shell会话并执行外部程序...

0 个答案:

没有答案