我正在使用AndroidViewClient运行自动化测试脚本。我在脚本中执行了几次转储。该脚本用于Android设备上的速度/响应时间测试,并且测试运行n> 300。我在运行#150时收到以下错误。
引发ValueError(“收到的不包含有效的XML:”+ receivedXml) ValueError:received不包含有效的XML:Killed
在使用“memory_profiler”进行一些挖掘和监视内存之后,转储数据似乎堆积在内存上并减慢测试速度并影响测试结果。
1-为什么我会收到错误? 2-存储转储数据的确切位置? 2-每次转储时如何清除内存?
答案 0 :(得分:1)
您所描述的内容似乎是uiautomator dump
(可能是您的设备实施)的问题, AndroidViewClient 用作API> = 19的默认后端。
但是,要绝对确定你应该从图片中删除AndroidViewClient并运行相同的命令,它将被用作后端。
AndroidViewClient 12.0.2 支持在命令行中指定的一些调试选项,这对于确定正在运行的命令非常有用。
$ dump --debug UI_AUTOMATOR:True > /dev/null
此命令将打印类似
的内容executing 'uiautomator dump --compressed /dev/tty >/dev/null'
然后,这是您可以反复运行的命令,以确定问题是否在您的设备中。
例如,复制打印的命令,然后才能使用bash
运行
for n in {0..299}; do echo $n; adb shell uiautomator dump --compressed /dev/tty \>/dev/null >/dev/null; done
并检查是否存在内存泄漏或设备出现故障。
关于您的问题,正如您从命令中看到的那样,转储数据不会存储在任何位置,只会复制到套接字。 有些版本要求将数据本地存储在设备上,但在这种情况下,每次都会覆盖使用的文件。