Как очистить данные дампа (AndroidViewClient/Culebra) из памяти?

Я запускаю сценарий автоматического тестирования с использованием AndroidViewClient. Я делаю несколько дампов в скрипте. Скрипт используется для теста скорости / времени отклика на устройстве Android, и тест выполняется для n>300. Я получаю следующую ошибку при запуске #150.

повысить ValueError("полученный не содержит действительный XML: " + receiveXml) ValueError: полученный не содержит действительный XML: убит

После некоторого копания и мониторинга памяти с помощью "memory_profiler", данные дампа, похоже, складываются в памяти и замедляют тест и влияют на результаты теста.

1- Почему я получаю ошибку? 2- Где именно хранятся данные дампа? 2- Как очистить память каждый раз, когда я сбрасываю?

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

и проверьте, есть ли утечка памяти или что-то выходит из строя на устройстве.

Что касается вашего вопроса и, как вы можете видеть из команды, данные дампа нигде не хранятся, а только копируются в сокет. Существуют версии, которые требуют локального хранения данных на устройстве, но в этом случае используемый файл перезаписывается каждый раз.

Другие вопросы по тегам