Подтвердить что ты не робот

Каковы стратегии создания многоразовых библиотек скриншотов Sikuli?

Я хотел бы использовать Sikuli для автоматизации приложений GUI и веб-приложений, работающих в браузере в Mac OS X и Windows. Моя цель в настоящее время меньше для тестирования, и больше для автоматизации GUI утомительных, повторяющихся задач для команды, которая к сожалению не имеет доступа к более низкому уровню автоматизации в настоящее время.

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

Каковы некоторые хорошие стратегии для создания многоразовых библиотек скриншотов Sikuli? Некоторые мысли:

  • Я должен снимать снимки экрана за пределами Sikuli, а затем разрезать/вырезать эти изображения, чтобы вытащить определенные интерфейсные элементы в Sikuli?
  • Как я могу лучше отслеживать снимки экрана для эквивалентных элементов интерфейса в похожих графических приложениях?
  • Как я могу лучше отслеживать снимки экрана в тех же веб-приложениях, что и в разных браузерах или платформах?
  • Как я могу наилучшим образом организовать элементы, которые являются иерархическими, например меню, где вы должны сделать выбор 1, затем выбрать 2, затем выбрать 3 (но следующий выбор появится только после того, как выбран предыдущий)?
  • должны ли экраны сниматься как переменные, чтобы они могли ссылаться на них более общим образом?
  • Должен ли я создавать списки или словари Python, содержащие скриншоты?
  • Я должен группировать снимки экрана в отдельные файлы Sikuli на основе приложения/платформы?

Я предполагаю, что я могу импортировать библиотеки, такие как модуль Python, что, безусловно, возможно из документации.

Спасибо!

4b9b3361

Ответ 1

Существует надстройка под названием " Robust GUI Automation Library для Sikuli.

Даже если вы не воспользуетесь библиотекой, есть некоторые действительно хорошие уроки, которые нужно изучить, глядя на их реализацию проблемы.

Несколько предложений:

Должен ли я снимать снимки экрана за пределами Сикули, а затем разрезать/вырезать эти изображения, чтобы вытащить определенные элементы интерфейса в Sikuli?

  • Более важным, чем ваши элементы, является сохранение этих элементов. Я стандартизую, как я называю графику, то есть: Button_OK.png, а не Sikuli unpredictable_default_name.png

  • Вы можете добавлять библиотеки изображений "на лету" в свой Sikuli script. Храните различные графики браузера и платформы в разных каталогах.

    myImagePath = "M:\\myImageLibrary\\"
    addImagePath(myImagePath)
    

как лучше всего отслеживать снимки экрана для эквивалентного интерфейса элементов в похожих графических приложениях?

Соглашения об именах!

\\firefox\\Button_OK.png
\\IE8\\Button_OK.png

Вы также можете играть с "сходством" Pattern, чтобы получить тот же рисунок, что и для IE и Firefox (но без ложных срабатываний). Это может занять несколько проб и ошибок.

Должен ли я создавать списки или словари Python, содержащие скриншоты?

Это действительно хорошая практика и хорошо работает для меня в определенных обстоятельствах. Иногда, хотя имя файла лучше документирует функциональность script, чем смещение списка.

Я предполагаю, что я могу импортировать библиотеки, такие как модуль Python, что, безусловно, возможно из документации.

Да, вы можете импортировать библиотеки.

Ответ 2

Это похоже на отличную библиотеку, рекомендованную spearson.

Я добавил бы еще одно понятие в список, калибровка.

Как и в любых испытательных отраслях, калибровка ваших приборов является обязательной.

В рамках полей SQA/автоматизации предположение может привести к катастрофе.

Сценарий:

В понедельник вы определяете снимки экрана кнопки "Подача" в Chrome, которые будут использоваться при автоматизации на Сикули.

Вы быстро работаете, и во вторник ваш тестовый пакет обеспечивает точный проход/неудачу, как вы ожидаете.

В пятницу днем, непосредственно перед пивом, машина автоматически обновляется до следующего небольшого выпуска Chrome, который изменяет кнопки отмены, достаточно, чтобы их подбирали Sikuli в качестве кнопок отправки.

Взгляните на свои отчеты, прежде чем покинуть офис на выходные, и ваши отчеты выглядят нормально, как обычно, но вы не понимаете, что они дают ложные срабатывания до ужасного понедельника, когда все выходные были нарушены ( но, эй, по крайней мере у вас были хорошие выходные!).

Полностью гипотетическая ситуация, но, надеюсь, подчеркивает необходимость "тестирования ваших тестов" или калибровки ваших инструментов в среде автоматизации однократной записи и запуска.

Решение:

Чтобы смягчить проблемные ситуации, подобные описанным выше, вы можете настроить веб-страницы (ы), которые, как вы знаете, ведут определенный способ взаимодействия со скриншотами в вашей статической библиотеке. Прежде чем запускать каждый проект набора тестов/объемной автоматизации, он будет вызывать набор для калибровки и убедиться, что все работает так, как ожидалось, будь то браузер, файловый менеджер и т.д.

Ответ 3

Как разработчик Java (не уверен, что это относится ко многим пользователям sikuli): я выполнил свою собственную реализацию. Я создал одноэлементный файл FileDirectory, у которого есть методы для каталогов по умолчанию (ресурсы, шаблоны, скриншоты). И всякий раз, когда у меня были сикули, сделайте снимок экрана, я бы сохранил его в этом каталоге по умолчанию (который был создан, если он не существовал при запуске). Мое приложение будет записывать скриншот. Используя html logger, я мог бы ссылаться на каталог скриншотов. Таким образом, в моих html-журналах были ссылки, вложенные в них, на образы, которые было выполнено приложением.

Я знаю, что сначала это может показаться трудным, но в конечном итоге он предоставил именно то, что нужно использовать.

Ответ 4

Возможно, это даст вам некоторые идеи.
У меня есть файл, где у меня есть несколько определений, которые нужно искать для определенного изображения.
Иногда изображение, которое им нужно искать, отличается в разных браузерах.
Поэтому я использую что-то вроде этого:

Файл: ImageLib.sikuli

browser_Windows_Firefox = ("windowsFox.png")
browser_Mac_Firefox = ("macFox.png")

Файл: Execute.sikuli

from ImageLib import *

# Variable you can get set somewhere 
operatingSystem = 'Mac'

image = ()
if (operatingSystem == 'Windows'):
    image = browser_Windows_Firefox
elif (operatingSystem == 'Mac'):
    image = browser_Mac_Firefox
else:
    # Unknow option here.... 
    pass

# Find and highlight it. 
imageLoc = find(image)
imageLoc.highlight(5)