Автоматически делать скриншоты окна программы

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

У нас есть руководство по программному обеспечению с несколькими скриншотами. Когда новая версия программного обеспечения выпущена, нам нужно обновить большинство скриншотов, и мы должны сделать это вручную. Теперь мы начали переводить руководство на несколько языков, и количество снимков экрана увеличилось в десять раз. Мы хотели бы автоматизировать этот процесс.

Там будет записанный макрос или что-то, что нажимает кнопку в нашем программном обеспечении и делает скриншоты окна программы. Еще лучше, мы можем указать название каждого скриншота индивидуально, хотя это менее важно.

Существует ли такая вещь?

7 ответов

Решение

Я использую AutoIt plus captdll.dll для всех моих задач автоматизации Windows GUI.

Пример:

Run("Notepad.exe", @WindowsDir, @SW_MAXIMIZE)   ; Open NOTEPAD
Sleep(1000)
Send("Just a Test")   ; Send some text to notepad

; Save the screen to test.jpg  
$anPos = WinGetClientSize("")
$nLeft = 0
$nTop = 0
$nRight = $anPos[0]
$nBottom = $anPos[1]

$sFileName = "test.jpg"
DllCall("captdll.dll", "int:cdecl", "CaptureScreen", "str", $sFileName, "int", 85)

Таким образом, вы можете автоматизировать весь процесс захвата скриншота:

  • запустите ваше приложение с помощью Run
  • выберите каждый из ваших пунктов меню с помощью Отправить
  • заполните данные каждого экрана также с помощью Отправить
  • захват с помощью DllCall("captdll.dll" ....)

Вы также можете добавить условную логику, цикл и т. Д.

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

http://en.wikipedia.org/wiki/List_of_GUI_testing_tools

Yoiu может ознакомиться с существующим Windows Automation API: UI Automation, документация MSDN

Требования времени выполнения

Автоматизация пользовательского интерфейса поддерживается в следующих операционных системах: Windows XP, Windows Server 2003, Windows Server 2003 R2, Windows Vista, Windows 7, Windows Server 2008 и Windows Server 2008 R2.

Клиентским приложениям, от простых тестовых сценариев до надежных утилит записи и воспроизведения, может потребоваться доступ к элементам, которые в данный момент не создаются, например к диалоговому окну открытия файла или пункту меню, и, следовательно, не существуют в дереве автоматизации пользовательского интерфейса. Эти элементы могут быть созданы только путем воспроизведения или "воспроизведения" определенной последовательности действий пользовательского интерфейса посредством использования свойств автоматизации пользовательского интерфейса, таких как AutomationID, шаблоны управления и прослушиватели событий. См. Пример генератора тестовых сценариев для примера, который использует Microsoft UI Automation для создания тестовых сценариев на основе взаимодействия пользователя с пользовательским интерфейсом (UI).

Вы можете использовать AutomationIdProperty внутри существующего проекта Visual Studio.

Внедрение автоматизации пользовательского интерфейса в тестовом приложении

  • Добавьте ссылки автоматизации пользовательского интерфейса.

DLL библиотеки UI Automation, необходимые для клиентов UI Automation, перечислены здесь.

UIAutomationClient.dll предоставляет доступ к клиентским API пользовательского интерфейса UI Automation.

UIAutomationClientSideProvider.dll предоставляет возможность автоматизации элементов управления Win32. См. Поддержка автоматизации пользовательского интерфейса для стандартных элементов управления.

UIAutomationTypes.dll предоставляет доступ к определенным типам, определенным в UI Automation.

  • Добавьте пространство имен System.Windows.Automation.

Это пространство имен содержит все, что нужно клиентам UI Automation для использования возможностей UI Automation, кроме обработки текста.

  • Добавьте пространство имен System.Windows.Automation.Text.

Это пространство имен содержит все, что необходимо клиентам UI Automation для использования возможностей обработки текста UI Automation.

  • Найти интересующие элементы управления

Автоматизированные тестовые сценарии находят элементы автоматизации пользовательского интерфейса, которые представляют интересующие элементы управления в дереве автоматизации.

Есть несколько способов получить элементы автоматизации пользовательского интерфейса с помощью кода.

Запросите пользовательский интерфейс с помощью оператора Condition. Это обычно, где используется независимый от языка AutomationIdProperty. Примечание. AutomationIdProperty можно получить с помощью такого инструмента, как UISpy.exe (шпион пользовательского интерфейса), который может детализировать свойства автоматизации пользовательского интерфейса элемента управления.

Используйте класс TreeWalker для обхода всего дерева автоматизации пользовательского интерфейса или его подмножества.

Трек фокус.

Используйте hwnd контроля.

Используйте местоположение на экране, например местоположение курсора мыши.

См. Получение элементов автоматизации пользовательского интерфейса

  • Получить контрольные шаблоны

Шаблоны управления раскрывают общее поведение для функционально похожих элементов управления.

После обнаружения элементов управления, требующих тестирования, сценарии автоматического тестирования получают интересующие шаблоны элементов управления из этих элементов автоматизации пользовательского интерфейса. Например, шаблон элемента управления InvokePattern для типичной функциональности кнопки или шаблон элемента управления WindowPattern для функциональности окна.

См. Обзор шаблонов управления UI Automation.

  • Автоматизировать пользовательский интерфейс

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

Связанные инструменты и технологии

Существует ряд связанных инструментов и технологий, которые поддерживают автоматизированное тестирование с помощью UI Automation.

UISpy.exe (UI Spy) - это приложение с графическим пользовательским интерфейсом (GUI), которое можно использовать для сбора информации об автоматизации пользовательского интерфейса для разработки и отладки как поставщика, так и клиента. Пользовательский интерфейс Spy входит в комплект разработчика программного обеспечения Windows (SDK).

UIAutoCmd - это инструмент командной строки с возможностями, похожими на UI Spy.

MSAABridge предоставляет информацию об автоматизации пользовательского интерфейса клиентам Active Accessibility. Основная цель соединения автоматизации пользовательского интерфейса с Active Accessibility - предоставить существующим клиентам Active Accessibility возможность взаимодействия с любой платформой, в которой реализована UI Automation. Безопасность

Для получения информации о безопасности см. Обзор безопасности UI Automation.

Если это веб-приложение, вы можете использовать Selenium. Есть аналогичные инструменты для Visual Studio под названием Test Automation FX

Я перепробовал многие, и, на мой взгляд, действительно выделяется Adobe (ранее Macromedia) Captivate. Это ужасно дорого (~800$), но стоит каждой копейки.

Создание учебников и т. Д. Занимает минуты, а не часы.

Кажется, что у тестирования Anywhere есть нужная вам функциональность. Несколько слов с их сайта:

"Мощные возможности записи на основе графического интерфейса и не требующий программирования пользовательский интерфейс позволяют тестировщикам быстро настраивать даже сложные тестовые случаи"...

"Отчеты о визуальном журнале. Мощный параметр визуализации Testing Anywhere делает снимки экрана для создания визуальных журналов во время выполнения". (посмотреть здесь)

Вы также можете попробовать что-нибудь более простое и (более дешевое!), Такое как Jitbit Macro Recorder, которое позволит вам воспроизводить записанные макросы (клавиатура и мышь), а затем использовать клавишу Shift-PrintScreen в макросе для создания снимков экрана. Он также имеет редактор макросов.

Я бы использовал инструмент с открытым исходным кодом Sikuli. Довольно простой язык сценариев или вы можете использовать их классы и написать свой собственный код Java.

Вот документация для захвата части экрана: http://sikuli.org/docx/screen.html

Бонус в том, что это поддерживается на Windows, Linux и Mac!

Другие вопросы по тегам