Получение значений из текстовых полей с помощью UIAutomation - PullRequest
5 голосов
/ 25 ноября 2011

Я пытаюсь понять, как UIAutomation можно использовать для автоматического тестирования приложения, поэтому я создал приложение для преобразования температуры, которое можно запускать из интерфейса JavaScript.Вот пользовательский интерфейс:

enter image description here

Верхнее текстовое поле имеет метку Доступности «Цельсия», аналогично нижнее поле имеет «Фаренгейт» в качестве метки Доступности.Я пытаюсь прогнать его через этот скрипт:

UIALogger.logStart("Test -40ºC == -40ºF");
var window = UIATarget.localTarget().frontMostApp().mainWindow();
var celsiusField = window.textFields()["Celsius"];
var fahrenheitField = window.textFields()["Fahrenheit"];
var convertButton = window.buttons()["Convert"];

celsiusField.setValue("-40");
convertButton.tap();
var fahrenheitValue = fahrenheitField.value();
if (fahrenheitValue == "-40.0") {
    UIALogger.logPass("-40C == -40F");
} else {
    UIALogger.logFail("-40C == " + fahrenheitValue + "F");
}

Это корректно устанавливает текст в поле Цельсия на «-40», и когда кнопка нажата, приложение обновляет текст в градусах Фаренгейтаполе до "-40.0".Однако fahrenheitValue имеет значение «Фаренгейт» (имя / метка текстового поля), поэтому проверка не пройдена.Я задавался вопросом, возможно, это была проблема с синхронизацией, поэтому поместите задержку в одну секунду после касания, которое не изменило поведение.

Можно ли вывести текст из текстового поля и сравнитьэто с ожидаемым значением?

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Получается ли "Фаренгейт", потому что это ярлык доступности или потому что это текст заполнителя?

Похоже, значение () может вернуть текст заполнителя. Одним из обходных путей может быть изменение значения заполнителя после того, как пользователь начинает вводить текст, который будет введен пользователем, а затем возвращать его в градусы Фаренгейта при удалении? Я предполагаю, что даже когда вы вызываете setValue, он действует так, как если бы вызывались методы делегата UITextField?

0 голосов
/ 25 ноября 2011

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

Один из способов обновления значений - отправить событие обновления:

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
0 голосов
/ 25 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...