Come confrontare gli screenshot a un'image di riferimento utilizzando appium

Posso portre con successo lo screenshot della pagina della mia applicazione JainLibrary utilizzando il codice sottostante. Sto usando junit e appium.

public String Screenshotpath = "Mention the folder Location"; File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, new File(Screenshotpath+"Any name".jpg")); 

Ora voglio confrontare lo screenshot con un'image di riferimento in modo da poter andare avanti con il caso di prova.

  • Implementazione di problemi di GLSurfaceView.Renderer
  • Ottenere AppCompat non support l'exception corrente delle funzionalità di tema dopo l'aggiornamento alla versione di AppCompat v22.1.0
  • errore di tutorial di helloandroid: il tempo di richiesta non è riuscito
  • Utilizzo di Alarmmanager per avviare un servizio a tempo determinato
  • Gradley di Android sostituisce il nome del pacchetto per un valore in manifesto
  • leggere file in asset o cartella cruda in Android
  • Imansible importre javax.imageio.ImageIO nell'applicazione Android
  • Android analizza JSONObject
  • leggere file dall'archivio esterno
  • Segnale fatale 11 (SIGSEGV) a 0x00000000 (codice = 1) - PhoneGap
  • come utilizzare runOnUiThread
  • Problema di aggiornamento dell'applicazione Android
  • One Solution collect form web for “Come confrontare gli screenshot a un'image di riferimento utilizzando appium”

    Una soluzione semplice sarebbe quella di confrontare each pixel con lo screenhoot di riferimento:

     // save the baseline screenshot driver.get("https://www.google.co.uk/intl/en/about/"); File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, new File("c:\\temp\\screenshot.png")); // take another screenshot and compare it to the baseline driver.get("https://www.google.co.uk/intl/en/about/"); byte[] pngBytes = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES); if (IsPngEquals(new File("c:\\temp\\screenshot.png"), pngBytes)) { System.out.println("equals"); } else { System.out.println("not equals"); } 
     public static boolean IsPngEquals(File pngFile, byte[] pngBytes) throws IOException { BufferedImage imageA = ImageIO.read(pngFile); ByteArrayInputStream inStreamB = new ByteArrayInputStream(pngBytes); BufferedImage imageB = ImageIO.read(inStreamB); inStreamB.close(); DataBufferByte dataBufferA = (DataBufferByte)imageA.getRaster().getDataBuffer(); DataBufferByte dataBufferB = (DataBufferByte)imageB.getRaster().getDataBuffer(); if (dataBufferA.getNumBanks() != dataBufferB.getNumBanks()) { return false; } for (int bank = 0; bank < dataBufferA.getNumBanks(); bank++) { if (!Arrays.equals(dataBufferA.getData(bank), dataBufferB.getData(bank))) { return false; } } return true; } 

    Si noti che è necessario salvare lo screenshot di riferimento come PNG . Un formato JPEG modifica i pixel.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.