Capturar captura de pantalla de Android con appium

Actualmente tengo algo que funciona para capturar capturas de pantalla en iOS para las pruebas de appium utilizando java y junit. Antes de que una prueba termine, ejecuta este código para obtener la última cosa visible en la pantalla antes de matar la conexión

@After public void tearDown() throws Exception { if (platform.equals(iOS)) { captureScreenshot(testName.getMethodName()); } driver.quit(); } @SuppressWarnings("Augmenter") public void captureScreenshot(String testName) { String imagesLocation = "target/surefire-reports/screenshot/" + platform + "/"; new File(imagesLocation).mkdirs(); // Insure directory is there String filename = imagesLocation + testName + ".jpg"; try { Thread.sleep(500); WebDriver augmentedDriver = new Augmenter().augment(driver); File scrFile = ((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, new File(filename), true); } catch (Exception e) { System.out.println("Error capturing screen shot of " + testName + " test failure."); // remove old pic to prevent wrong assumptions File f = new File(filename); f.delete(); // don't really care if this doesn't succeed, but would like it to. } } 

Esta sorta funciona para Android, pero últimamente ha matado por completo la prueba de ejecución, pero esto podría tener que ver con el dispositivo que está tratando de obtener la instantánea de. Antes de guardar el archivo, pero la imagen se presentaría en blanco o roto.

Alguien sabe cómo obtener la captura de imagen / pantalla de trabajo en Android usando appium? Tal vez algo con UIAutomator?

Puede utilizar este método:

 public void screenshot(String path_screenshot) throws IOException{ File srcFile=driver.getScreenshotAs(OutputType.FILE); String filename=UUID.randomUUID().toString(); File targetFile=new File(path_screenshot + filename +".jpg"); FileUtils.copyFile(srcFile,targetFile); } 

Funciona bien para mí.

Me pasó a encontrar esto a través de búsqueda de Google con casi el mismo problema – Capturas de pantalla de Appium en el emulador de Android vienen en blanco. Estoy usando tanto el método "nativo" como usted describe arriba – y – el método dentro del marco de ATU.

 WebElement appArea = wd.findElementByXPath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]"); ATUReports.add("Main Screen Area Screenshot", LogAs.INFO, new CaptureScreen(appArea)); 

Y ambos vuelven en blanco / transparente. La buena noticia es que la dimensión de esa imagen en blanco / transparente es exactamente el tamaño que quiero capturar, evitando la barra de estado donde los diffs de fecha podrían causar errores en la comparación de imágenes. Dicho esto, no es mucho uso sin píxeles visualizables reales (para la eventual coincidencia de grabs de área de objeto con imágenes de línea de base validadas).

Traté de establecer el contexto a "NATIVE_APP" y nada parece ayudar. Estoy – en una palabra – enojado. Si has hecho algún progreso con esto, me encantaría leer y escuchar cómo lo hiciste funcionar. Tal vez el siguiente paso sea ir al Grupo de Google Appium.

EDIT: He encontrado el problema central en mi caso – utilizando HAXM aceleración causas de las capturas de pantalla en blanco. Tenga en cuenta que esto también afecta a la ejecución de prueba en dispositivos físicos si el perfil de dispositivo base establecido en las capacidades de la prueba se define con "Host GPU" seleccionado.

  • esperar hasta que el wifi esté conectado en android
  • No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () en el diálogo de diálogo de alerta
  • Cómo eliminar algunas palabras de una cadena en java
  • Dagger 2: Inyectar el parámetro introducido por el usuario en el objeto
  • Obtener boolean de la base de datos utilizando Android y SQLite
  • Serializar una ArrayList
  • No se pueden actualizar los resúmenes de cabecera de PreferenceActivity en teléfonos inteligentes que ejecutan 4.x
  • La función de sustitución de cadena no funciona en android
  • Clase de descriptor de módulo local para com.google.firebase.auth no encontrada
  • AllArgsConstructor de lombok no fue encontrado por Android Studio
  • excepción java.lang.NoClassDefFoundError en algunos dispositivos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.