Команда Android push shell на uiautomator - PullRequest
0 голосов
/ 29 марта 2019

Я пытался использовать uiautomation для отправки mp3 на моем устройстве, поэтому я использую этот код:

mDevice.executeShellCommand("push music\\testing.mp3 /sdcard/Music");

но после запуска ничего не происходит, что-то не так с моим кодом?

1 Ответ

1 голос
/ 29 марта 2019

executeShellCommand выполняет команду на устройстве, которое вы автоматизируете. Это UiAutomator эквивалент "adb shell <command>". Однако, чтобы отправить файл на такое устройство, вы должны выполнить его на локальном компьютере (где находится файл), так как устройство ничего об этом не знает.

Среды автоматизации, такие как Appium , уже предоставляют простую функцию для отправки файлов, но я не смог найти ничего похожего для низкоуровневого UiAutomator. Ваш самый простой выбор - вызвать adb push вручную:

ProcessBuilder pb = new ProcessBuilder("adb", "-s", "DEVICE_UDID", "push", "music\\testing.mp3", "/sdcard/Music");
Process pc = pb.start();
pc.waitFor();

(источник)

Обязательно замените DEVICE_UDID идентификатором вашего устройства (как показано на устройствах adb). В качестве альтернативы, если к вашему компьютеру подключено только одно устройство, вы можете удалить "-s", "DEVICE_UDID" из команды, оно будет считать ваше подключенное устройство в качестве цели вашей команды.

...