Установка
Порой в автотестах необходима проверка наличия какого-либо графического паттерна, хотя это и не самый лучший выход, но часто — единственный. В данной статье я покажу как реализовать сравнение изображений в проекте на C#.
Первым делом у нас должна быть установлена Java, с указанием всех необходимых путей в “Переменных среды”. Для работы нам также понадобится установить Sikuli.
http://sikulix.com/ — официальный сайт Sikuli Script.
https://launchpad.net/sikuli/sikulix/1.1.0 — здесь непосредственно находится jar – файл для установки Sikuli IDE на компьютер.
После завершения закачки, дважды кликаем на sikulixsetup-1.1.0.jar. В окне выбираем первый пункт.
В “Переменные среды” добавляем путь к папке с Sikuli, переменная должна иметь имя “SIKULI_HOME”.
Создание скрипта
После двойного клика на sikulix.jar откроется Sikuli IDE.
Пропишем следующий код:
1 2 3 4 |
if(exists()): print "true" else: print "false" |
для указания конкретного изображения нажимаем на “Insert Image” и ищем заготовку на нашем ПК
Для настройки точности поиска нажимае на изображение, и переходим в “Matching Preview” таб, где мы и устанавливаем нужную точность.
Сохраняем скрипт и пользуемся им.
Использование скрипта в C#
Для работы с Sikuli с использованием языка программирования C# устанавливаем в проект SikuliSharp через NuGet.
Полную документацию для SikuliSharp можете просмотреть здесь: https://github.com/christianrondeau/SikuliSharp
У меня в проекте вся работа ограничивается следующим методом, который вставляем в Assert:
1 2 3 4 5 6 7 8 |
public static class ImageComparator { public static bool IsImagePresent(string scriptName) { return Boolean.Parse(Sikuli.RunProject(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Resources\" + scriptName + ".sikuli")); } } |
Visual Studio видит .sikuli скрипт как папку. Поэтому нужно будет создать в проекте каталог одноимённый названию скрипта с расширением на конце. А все 3 вложенных файла пометить как “Content” и в настройках выставить им “Copy if newer”.