Настройка закодированного теста пользовательского интерфейса таким образом, чтобы во время воспроизведения он дожидался определенных событий
При воспроизведении закодированных тестов пользовательского интерфейса можно задать ожидание определенных событий, например появления окна, исчезновения индикатора выполнения и т. д.Для этого следует воспользоваться соответствующим методом UITestControl.WaitForControlXXX(), описанным в следующей таблице.Пример закодированного теста пользовательского интерфейса, ожидающего включения элемента управления за счет применения метода WaitForControlEnabled, см. в разделе Пошаговое руководство. Создание, изменение и обслуживание закодированного теста пользовательского интерфейса.
Требования
- Visual Studio Ultimate, Visual Studio Premium
Совет |
---|
Можно также добавить задержки перед действиями с помощью редактора закодированных тестов пользовательского интерфейса.Для получения дополнительной информации см. Практическое руководство. Вставка задержки перед действием пользовательского интерфейса с помощью редактора закодированных тестов пользовательского интерфейса. |
Методы UITestControl.WaitForControlXXX()
Методы UITestControl.WaitForControlXXX() |
Описание |
---|---|
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReady ] |
Ожидание готовности элемента управления к приему ввода с помощью мыши или клавиатуры.Обработчик неявным образом вызывает этот API для всех действий, чтобы элемент управления был подготовлен, прежде чем можно будет выполнять какие-либо операции с ним.Однако в некоторых особых случаях может потребоваться явный вызов. |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlEnabled ] |
Ожидание включения элемента управления, когда мастер выполняет определенную асинхронную проверку вводимых данных за счет обращения к серверу.Например, с помощью этого метода можно дождаться включения кнопки Далее мастера.Пример этого метода см. в разделе Пошаговое руководство. Создание, изменение и обслуживание закодированного теста пользовательского интерфейса. |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlExist ] |
Ожидание появления элемента управления.Например, после проверки приложением определенных параметров может предполагаться появление сообщения об ошибке.Время проверки является переменным.С помощью этого метода можно дождаться появления диалогового окна с сообщением об ошибке. |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlNotExist ] |
Ожидание исчезновения элемента управления.Например, можно дождаться исчезновения индикатора выполнения. |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyEqual(System.String,System.Object) ] |
Ожидание того, что определенное свойство элемента управления примет заданное значение.Например, можно дождаться, пока текст состояния не изменится на Done. |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyNotEqual(System.String,System.Object) ] |
Ожидание того, что определенное свойство элемента управления примет значение, отличное от заданного.Например, можно дождаться, пока поле ввода перестанет быть доступным только для чтения, т. е. в него можно будет вводить текст. |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlCondition(System.Predicate{Microsoft.VisualStudio.TestTools.UITesting.UITestControl}) ] |
Ожидание того, что определенный предикат вернет значение true.Этот метод можно использовать в составной операции ожидания (например, при проверке условий ИЛИ) для заданного элемента управления.Например, можно дождаться, пока текст состояния не примет значение Succeeded или Failed, как показано в следующем фрагменте кода.
|
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForCondition``1(``0,System.Predicate{``0}) ] |
Все вышеописанные методы являются методами-экземплярами UITestControl.Это статический метод.Этот метод также ожидает, пока определенный предикат примет значение true, но его можно использовать и в составной операции ожидания (например, при проверке условий ИЛИ) для нескольких элементов управления.Например, можно дождаться, пока текст состояния не примет значение Succeeded или пока не появится сообщение об ошибке, как показано в следующем фрагменте кода.
|
Все эти методы реализуют следующее поведение:.
они возвращают значение true в случае успеха ожидания и false в противном случае;
неявное время ожидания задается свойством WaitForReadyTimeout.По умолчанию это свойство имеет значение 60000 миллисекунд (одна минута);
у этих методов есть перегруженная версия, принимающая явное время ожидания в миллисекундах.Но если операция ожидания приводит к неявному поиску элемента управления, либо если приложение занято, фактическое время ожидания может превышать заданное значение.
Описанные выше функции являются мощными и гибкими инструментами, и их должно быть достаточно для решения почти любых задач.Если же этих методов оказывается недостаточно и в коде требуется использовать метод Wait или Sleep, рекомендуется вместо API Thread.Sleep() использовать Playback.Wait().Это объясняется следующими причинами:
с помощью свойства ThinkTimeMultiplier можно изменять длительность ожидания.По умолчанию эта переменная равна 1, но ее можно увеличивать или уменьшать, чтобы изменять время ожидания для всего кода.Например, если тестирование выполняется для медленной сети или другой ситуации с низкой производительностью, можно в одном месте (или даже в файле конфигурации) увеличить значение переменной до 1,5, и время ожидания будет везде увеличено на 50%;
внутри метода Playback.Wait() вызывается метод Thread.Sleep() (с учетом описанных выше расчетов) на небольшие периоды в цикле for; при этом проверяется запрос пользователем операции cancel\break.Иными словами, метод Playback.Wait() позволяет отменить воспроизведение до завершения ожидания, в то время как метод Sleep может вызвать исключение.
Совет |
---|
Редактор закодированных тестов пользовательского интерфейса позволяет удобным образом изменять закодированные тесты пользовательского интерфейса.Редактор закодированных тестов пользовательского интерфейса позволяет находить, просматривать и изменять методы теста.Кроме того, можно изменять действия пользовательского интерфейса и соответствующие элементы управления на карте элементов управления пользовательского интерфейса.Для получения дополнительной информации см. Изменение закодированных тестов пользовательского интерфейса с помощью редактора закодированных тестов пользовательского интерфейса. |
Руководство
Дополнительные сведения см. в разделе Тестирование для непрерывной доставки с Visual Studio 2012 – Глава 5: Автоматизация системных тестов
См. также
Задачи
Основные понятия
Проверка кода с помощью закодированных тестов пользовательского интерфейса
Составляющие закодированного теста пользовательского интерфейса