function checkpointImg(property) { var tempPicture = findPreview(); //объект текущего окна var newPicture = tempPicture.Picture(0, 0, 400, 400); //обрезаю текущее окно var oldPicture = Utils.Picture; oldPicture.LoadFromFile("Stores/CheckpointImages/" + property + ".png"); //обращаюсь к эталону, скриншот "правильного" состояния окна" if (oldPicture.Find(newPicture)) { Log.Message("проверка скриншота " + property + " - успешно."); } else { Log.Message(tempPicture.fullName); Log.Picture(oldPicture, "Старый скриншот"); Log.Picture(tempPicture, "Новый скриншот"); Log.Picture(oldPicture.Difference(newPicture), "Разница"); Log.Error("проверка скриншота " + property + " - не удалось."); } }
Зависает поиск по картинкам
#1
Отправлено 16 февраля 2015 - 14:52
#2
Отправлено 17 февраля 2015 - 09:24
Станислав, к сожалению, здесь ничего не могу посоветовать.. но вопрос - вам реально нужно сравнивать изображения для тестирования функционала? Насколько это вообще оправдано?
Получается, изменится верстка малейшая, надо переделывать скрины везде. Это же жутко неудобно и трудозатратно.
#3
Отправлено 17 февраля 2015 - 09:43
Rebz, да, сравнение изображений нам, увы, необходимо.
Приложение десктопное, важной частью функционала которого является конструктор swing-элементов. Периодически выявляются ошибки в Порядке наложения (z-order), так что просто проверки по свойстам объектов нам мало.
Новые билды выходят часто, а дизайн меняется редко, так что трудозатраты оправданы.
Плюс, на случай смены дизайна все автоматизировано, я точно также прогоняю тесты, но включив примерно такие функции:
function saveImgPi(property) { var newPicture = findPi(); var myPicture = newPicture.Picture(); aqFileSystem.DeleteFile("Stores/CheckpointImages/" + property + ".png"); myPicture.SaveToFile("Stores/CheckpointImages/" + property + ".png"); }
#4
Отправлено 17 февраля 2015 - 15:14
Приложу скриншоты.
Вот эталон http://std3.ru/1f/d3...2b487bba157.png
Вот новый http://std3.ru/33/97...cab93812e34.png
Вот разница http://std3.ru/69/8c...8cc417fa028.png
Как видно, в проверяемой области скриншота разницы ничего красным цветом не помечено. Почему же условие if (oldPicture.Find(newPicture)) не проходит?
Скриншоты могли криво приложиться, вот еще яндексДиск
https://yadi.sk/i/hYB9LSJRejedC
https://yadi.sk/i/qnJn0jKBejebS
https://yadi.sk/i/Vhb22L1bejedQ
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных