instalar - sikulix java
Buscando imagen en Sikuli X Java (2)
Tengo un problema al intentar encontrar una imagen en la pantalla, intenté hacerlo de dos maneras diferentes y no parece funcionar para mí. Estoy tratando de hacer esto con Appium ejecutándose en el simulador de IOS que aparece en la pantalla, así que no veo que esto sea un problema de una captura de pantalla.
Estoy ejecutando MAC OSX El Capitan. He importado la API Sikuli X java en mi proyecto.
¿Necesito importar también el tarro de la biblioteca Sikuli de MAC?
Esto es lo que he intentado hasta ahora:
1.
Screen s = new Screen();
Pattern test = new Pattern("/Users/ealiaj/Desktop/Automation/workspace/WheelsUp - IOS/screenshot.jpg");
try {
s.find(test);
} catch (FindFailed e) {
}
2.
Screen s = new Screen();
try {
s.find("screenshot.jpg");
} catch (FindFailed e) {
}
Sigo consiguiendo que no se pueden encontrar errores.
mensaje de error:
FindFailed: no se puede encontrar / Users / ealiaj / Desktop / Automation / workspace / WheelsUp - IOS / screenshot1.jpg en S (0) [0,0 1440x900] Línea 2189, en el archivo Region.java
Esta es la imagen en la pantalla. El rectángulo rojo grande es la imagen para la que he creado una captura de pantalla y trato de encontrarla, pero me da ese error.
Lo único que puedo encontrar con éxito es ese rectángulo gris, o al menos no arroja un error para.
El mensaje de error dice que el programa busca un archivo .PNG y en su código está colocando un archivo .JPG.
Puedes usar este método para verificar las imágenes:
@Test
public void verifyImages() {
//WebElement img = driver.findElementByClassName("android.widget.ImageView");
//take screen shot
File screen = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.FILE);
//capture image of searched contact icon
List<WebElement > imageList = driver.findElementsByXPath("//*[@class=''android.widget.ImageView'' and @index=''0'']");
System.out.println(imageList.size());
System.out.println(i);
WebElement image = imageList.get(1);
Point point = image.getLocation();
//get element dimension
int width = image.getSize().getWidth();
int height = image.getSize().getHeight();
BufferedImage img = ImageIO.read(screen);
BufferedImage dest = img.getSubimage(point.getX(), point.getY(), width,
height);
ImageIO.write(dest, "png", screen);
File file = new File("Menu.png");
FileUtils.copyFile(screen, file);
//verify images
verifyImage("Menu.png", "Menu.png" );
}
public void verifyImage(String image1, String image2) throws IOException{
File fileInput = new File(image1);
File fileOutPut = new File(image2);
BufferedImage bufileInput = ImageIO.read(fileInput);
DataBuffer dafileInput = bufileInput.getData().getDataBuffer();
int sizefileInput = dafileInput.getSize();
BufferedImage bufileOutPut = ImageIO.read(fileOutPut);
DataBuffer dafileOutPut = bufileOutPut.getData().getDataBuffer();
int sizefileOutPut = dafileOutPut.getSize();
Boolean matchFlag = true;
if(sizefileInput == sizefileOutPut) {
for(int j=0; j<sizefileInput; j++) {
if(dafileInput.getElem(j) != dafileOutPut.getElem(j)) {
matchFlag = false;
break;
}
}
}
else
matchFlag = false;
Assert.assertTrue(matchFlag, "Images are not same");
}