Сохранить случайный запуск Android Monkey в формате сценария для последующего воспроизведения
Есть ли способ сохранить случайный запуск Android Monkey в сценарий с правильным форматом, чтобы потом воспроизвести его, выполнив:
adb shell monkey -p <package_name> -f script_file 1
РЕДАКТИРОВАТЬ:
Я знаю, что есть флаг семени (-s
), но это не то, что я хочу. Я должен быть в состоянии работать с сгенерированным сценарием, прежде чем передать его Обезьяне.
1 ответ
Непростой способ, но вы можете провести обратный инжиниринг исходного кода сценария обезьяны, чтобы создать сценарий, который берет выходные данные команды обезьяны и генерирует сценарий обезьяны.
Итак, вы могли запустить:
adb shell monkey -p <package_name> -v -v 1 > monkey-logs.txt
А потом*:
convert-to-monkey-script.sh monkey-logs.txt
Например, один вывод вызова обезьяны:
Replaying 11 events with speed 1.0
:Sending Touch (ACTION_DOWN): 0:(450.0,450.0)
:Sending Touch (ACTION_UP): 0:(450.0,450.0)
Sleeping for 45 milliseconds
...
Становится следующим обезьяньим сценарием (прочтите исходный код обезьяны, чтобы лучше понять аргументы):
type= raw events
count= 2
speed= 1.0
start data >>
DispatchPointer(6934862,6934862,0,450.0,450.0,0.0,0.0,0,1.0,1.0,0,0)
DispatchPointer(6934862,6934862,1,450.0,450.0,0.0,0.0,0,1.0,1.0,0,0)
Что можно запустить с помощью (с содержимым выше в файле monkey.script и после нажатия adb):
adb shell monkey -p <package_name> -f monkey.script 1
Я сделал простую суть для себя, что новообращенного ADB ТАПФА команды в формат обезьяна сценария (потому что они быстрее) здесь, так что я думаю, что можно сделать общий сценарий для этого.
*Запись: convert-to-monkey-script.sh
не существует. Как я уже сказал, кто-то МОЖЕТ это сделать
Сохранение сценария невозможно, но вы можете использовать начальное число, которое действует как начальное число в генераторе случайных чисел, поэтому одинаковое начальное число приводит к одинаковым событиям. Вот пример:
adb shell monkey -p com.package -s 123 500
Это запустит Monkey в пакете com.package со начальным значением 123 и выдаст 500 событий.