UIAPickerWheel.selectValue () не работает для текстовых значений в UIDatePicker - PullRequest
5 голосов
/ 29 ноября 2011

Я создал простой проект с использованием раскадровок, содержащих только UIDatePicker с mode = Date (чтобы даты выглядели как «ноябрь» «28» «2011»).

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

Я могу успешно использовать метод selectValue () для установки колес, которые содержат числовые значения, но не могут установить текстовое значение месяца, например «Ноябрь».

Это работает ..

target.frontMostApp().mainWindow().pickers()[0].wheels()[1].selectValue(12);

но это не так.

target.frontMostApp().mainWindow().pickers()[0].wheels()[0].selectValue("November");

Я получаю сообщение об ошибке: Script threw an uncaught JavaScript error: - selectValue is not supported on a picker with undefined values

Я сделал UIATarget.localTarget().frontMostApp().logElementTree() и вижу значениеправильно:

UIAPickerWheel: значение: ноябрьский прямоугольник: {{1, 142}, {146, 216}}

Пожалуйста, кто-нибудь может посоветовать, что я могу делать неправильно, большое спасибо.

Ответы [ 5 ]

4 голосов
/ 15 ноября 2012

Это исправлено в последней версии xcode (4.5.2)

target.frontMostApp().mainWindow().pickers()[0].wheels()[0].selectValue("November");

Теперь оно будет работать.

2 голосов
/ 23 мая 2012
Значение
while(monthWheel.value() != "June"){
  monthWheel.tapWithOptions({tapOffset:{x:0.5, y:0.33}});
  target.delay(0.5);
}

не является переменной, это функция, поэтому вы должны вызвать value() на колесе месяца, как я использовал.и tapWithOptions() приведет вас к следующему ряду в колесе.

0 голосов
/ 12 ноября 2015

Для тех, кто использует Appium, смотрите эту страницу здесь на доске обсуждений: https://groups.google.com/d/msg/appium-discuss/uYdRTdQDvpU/2I7KSFHnqFwJ

Поток идет так:

  • получить элемент выбора (имя тега: подборщик)
  • получить все колеса для этого сборщика (имя тега: колесо подборщика)
  • Вы можете перечислить значения для этого колеса, выполнив element.getAttribute ("values")
  • Вы можете установить значение, выполнив element.setValue (myNewValue)

Последний шаг неверен, и вам нужно использовать sendKeys () вместо setValue ()

Для реального примера, например, как я это использовал, было бы что-то вроде этого

String pickerWheelLocation = "UIATarget.localTarget().frontMostApp().windows()[3].pickers()[0].elements()[0]"
By pickerWheelBy = MobileBy.IosUIAutomation(pickerWheelLocation)
IOSElement pickerWheel = WebDriverHelper.getDriver().findElement(pickerWheelBy);
pickerWheel.sendKeys("New Value");

IOSElement doneButton = WebDriverHelper.getDriver().findElement(MobileBy.IosUIAutomation("UIATarget.localTarget().frontMostApp().windows()[2].toolbars()[0].buttons()["Done"]"));
    doneButton.click();
0 голосов
/ 24 декабря 2013

Просто найдите все значения конкретного подборщика с помощью

var pickerWheel1Values  = picker.wheels()[1]. values();

и если вы хотите установить ноябрь просто сделайте

picker.wheels()[index]. selectValue (pickerWheel1Values[10]);
0 голосов
/ 13 декабря 2011

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

while(target.frontMostApp().mainWindow().pickers()[0].wheels()[0].value != "November"){
  target.frontMostApp().mainWindow().pickers()[0].wheels()[0].tap();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...