uiautomator takescreenshot не работает без причины

#android #ui-automation

#Android #пользовательский интерфейс-автоматизация

Вопрос:

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

Вот часть моего кода:

У меня есть разрешение в моем AndroidManifest.xml уже

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS "/>
  

скриншот

 UiDevice mDevice =UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
mDevice.pressHome(); 
mDevice.takeScreenshot(new File("/sdcard/Pictures/test.png"));
sleep(3000);
  

Я уверен, что направление не ошибочное, потому что я пробовал тот же код раньше, он работал нормально, но через несколько дней я снова устал от него, и он не сработал без отображения какой-либо ошибки.

Ответ №1:

Можете ли вы попробовать

mDevice.takeScreenshot(новый файл(«/sdcard/Download/test.png»)); режим ожидания (3000);

Комментарии:

1. Я попробовал, и это не сработало, может быть, проблема не в том направлении, которое я предполагаю?

2. @abcde581125 делает снимок экрана с помощью команды adb shell, это работает?

3. спасибо за ваш совет, я это знаю, но сейчас мне нужно сделать снимок экрана автоматически, вот почему я использую этот способ создания скриншота, могу ли я автоматически сделать снимок экрана с помощью команды adb shell?

4. ДА… попробуйте использовать UIDevice.executeShellCommand(«команда»); Также не забудьте исключить строку «adb shell» из самой команды … если она не работает… расскажите мне о команде, я попробую ее здесь и поделюсь с вами точным кодом