Тестирование автоматизации пользовательского интерфейса: как выбрать значения UIAPickerWheel? - PullRequest
1 голос
/ 02 апреля 2011

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

var picker = UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0];
var aWheel = picker.wheels()[0];
var someVals = aWheel.values();

aWheel.selectValue(someVals[0]);

Но вместо этого я получаю следующую ошибку, зарегистрированную в приборах:

       Exception raised while running script: - selectValue requires a valid value

Есть идеи, как я могу

  • Установить предсказуемые значения для моих ячеек / компонентов UIPickerView?В настоящее время все они используют пользовательские UIViews, а не стандартные метки.

или

  • Каким-то образом получить массив значений из моих существующих ячеек для итерации?1019 *

    Что мне здесь не хватает?

Ответы [ 4 ]

3 голосов
/ 15 июля 2014

У меня также была эта проблема.

попробуйте var newValue = someVals[0].toString();

А затем используйте newValue, чтобы выбрать свое значение в вашем средстве выбора:

aWheel.selectValue(newValue);

Это сработало для меня

2 голосов
/ 08 августа 2012

Для меня метод selectValue на объекте колеса выбора не работал, если значения в колесе были пустыми, имели пробелы или имели некоторые специальные символы.В итоге мне пришлось использовать tapWithOptions({ tapOffset: { x: 0.23, y: 0.72 } }).

1 голос
/ 11 апреля 2011

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

target      = UIATarget.localTarget();
app         = target.frontMostApp();
mainWindow  = app.mainWindow();


function selectOffice() {

    UIALogger.logStart("selectOffice");

    var validField = false;

    try {

        var picker = mainWindow.pickers()[0];

        if (picker.isValid()) {

            var wheel = picker.wheels()[0];

            if (wheel.isValid()){

                var pickedItems = wheel.values();
                var nrOfItems = pickedItems.length;

                if (nrOfItems > 0 ) {
                    wheel.selectValue(pickedItems[nrOfItems-1]);
                    validField = true;
                }
            }
        }
    }
    catch(error) {
        UIALogger.logFail(error);
    }

    if (validField == true ) {
        UIALogger.logPass("selectOffice");
    } else {
        UIALogger.logFail("Couldnt find a valid control");
    }
    target.delay(1);
}
0 голосов
/ 13 декабря 2011

SelectValue() не похоже на текстовые значения. Это работает для числовых, хотя.

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

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