[英]finding image in Sikuli X Java
我在尝试在屏幕上查找图像时遇到问题,我尝试以两种不同的方式进行操作,但似乎对我不起作用。 我正在尝试使用在屏幕上显示的 IOS 模拟器上运行的 Appium 来执行此操作,因此我不认为这是截取屏幕截图的问题。
我正在运行 MAC OSX El Capitan 我在我的项目中导入了 Sikuli X java API
我还需要导入 MAC Sikuli 库 jar 吗?
这是我迄今为止尝试过的:
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) {
}
我不断发现找不到错误。
错误信息:
FindFailed:在文件 Region.java 中的 S(0)[0,0 1440x900] 行 2189 中找不到 /Users/ealiaj/Desktop/Automation/workspace/WheelsUp - IOS/screenshot1.jpg
这是屏幕上的图像,大红色矩形是我为其创建屏幕截图并尝试查找的图像,但出现该错误。
我唯一能够成功找到的是那个灰色矩形,或者至少它不会引发错误。
您可以使用此方法来验证图像:
@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");
}
错误消息表明该程序正在查找 .PNG 文件,并且在您的代码中放置了一个 .JPG 文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.