Sikuli + Java


(Влад) #1

Только начал разбираться со связкой Sikuli + java и уже наткнулся на проблему: Sikuli не находит картинки на экране.
OS:
Windows 8 x64
Java:
java version “1.8.0_20”
Java™ SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot™ Client VM (build 25.20-b23, mixed mode)
Sikuli:
1.0.1

Ну, собственно код:

package testng_tutorial;

import org.sikuli.script.Screen;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Region;

public class MessageUtil {

   private Pattern mainWindow;
   private Region window;
   private Screen m_screen;
   
   public MessageUtil() {
        mainWindow = new Pattern("mainWindow.png");
		m_screen = new Screen();

	    try {
			window = m_screen.wait(mainWindow);
		} catch (FindFailed e) {
			e.printStackTrace();
		}
   }
   
   public boolean isPatternExists(Pattern p){
	   if (window == null)
	   {
		   return false;
	   }
	   try {
		   window.find(p);
		   return true;
	   } catch (FindFailed e) {
		   return false;
	   }
	   }   
}  

и тест сюда же:

    package testng_tutorial;

import org.sikuli.script.App;
import org.sikuli.script.Pattern;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class SampleTest {
	
   private App app;
   private Pattern menuBtn;
   
   
   @BeforeTest
   public void setUp()
   {
	   menuBtn = new Pattern("menu_button.png").similar((float).8);
	   app = App.open("C:\\Windows\\system32\\calc.exe");
	   try 
	   {
		   Thread.sleep(2000);
	   } 
	   catch (InterruptedException e) 
	   {
			e.printStackTrace();
	   }
	   
   }
   
   @AfterTest
   public void tearDown()
   {
	   app.focus();
	   app.close();
   }
   
   @Test
   public void testSample() {
	    MessageUtil messageUtil = new MessageUtil();
        Assert.assertTrue(messageUtil.isPatternExists(menuBtn));
   }
}

Ошибка:
[log] App.open C:\Windows\system32\calc.exe(8568)
FindFailed: can not find P(mainWindow.png) S: 0.7 on the screen.

Может кто знает, чё с этим добром делать?)


Автоматизация Windows GUI приложений и поиск элементов приложения
(Sergey Korol) #2

В нашем GitHub есть пример работы с Sikuli, где вы сможете найти все ответы. Соответствующая тема в БЗ. Учимся пользоваться поиском.


(Sergey Ivanskoy) #3

Скажите, пожалуйста, зачем вы ждете картинку целого окна на экране? (я имею ввиду mainWindow.png - это ж у вас снимок главного окна калькулятора ?) Сикули пока не так уж и хорош как хотелось бы :smile: - он может терять слишком большие элементы на экране. Возможно, поэтому он и не находит окно калькулятора.


(Влад) #4

А вы не смотрите на нейминг. Я уже не особо заморачивался над неймингом файлов, когда пересохранял скрины ))


(Влад) #5

И еще: окно калькулятора не особо больше/меньше, чем вот у Spotify, как показывали [тут] 1


(Влад) #6

Спасибо! Прямо сейчас и гляну