2011-11-28 9 views
5

He creado un proyecto simple utilizando storyboards que contienen solo un UIDatePicker con mode = Date (para que las fechas aparezcan como "November" "28" "2011").UIAPickerWheel.selectValue() no funciona para valores de texto dentro de UIDatePicker

Dentro de Instruments UI Automation Estoy tratando de establecer los valores de las ruedas del selector de fechas individuales.

Puedo utilizar con éxito el método selectValue() para establecer las ruedas que contienen valores numéricos pero no pueden configurar el valor del texto del mes, p. "Noviembre".

Esto funciona ..

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

pero esto no lo hace ..

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

me sale el error: Script threw an uncaught JavaScript error: - selectValue is not supported on a picker with undefined values

me han hecho un UIATarget.localTarget().frontMostApp().logElementTree() y se puede ver el valor es correcto:

UIAPickerWheel: valor: Noviembre rect: {{1, 142}, {146, 216}}

Por favor, ¿alguien puede aconsejar sobre lo que podría estar haciendo mal, muchas gracias.

+0

¿Hiciste algún progreso aquí? – Jules

+0

lo siento, no lo hice :-( – MandyW

Respuesta

0

Tocaré hasta que mi valor sea el que quiero. Dado que el valor establecido es de 12 meses, se extenderá.

while(target.frontMostApp().mainWindow().pickers()[0].wheels()[0].value != "November"){ 
    target.frontMostApp().mainWindow().pickers()[0].wheels()[0].tap(); 
} 
+0

Hola, buena idea, pero esto no funciona, cuando intento esto me quedo atascado en un bucle infinito y la rueda no rueda :-( – MandyW

+0

while (monthWheel.value ! = "junio") { monthWheel.tapWithOptions ({tapOffset: {x: 0,5, y: 0,33}}); monthWheel.logElementTree(); target.delay (0,5); } aunque monthWheel.value es todavía no devolviendo un resultado válido – FishStix

2
while(monthWheel.value() != "June"){ 
    monthWheel.tapWithOptions({tapOffset:{x:0.5, y:0.33}}); 
    target.delay(0.5); 
} 

valor no es variable, es una función de lo que debe llamar value() en la rueda meses como antes. y tapWithOptions() lo llevarán a la siguiente fila en la rueda.

4

Esto se ha remediado en la última versión de Xcode (4.5.2)

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

ahora funcionará

0

Sólo tiene que encontrar todos los valores de la rueda selector particular usando

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

y si desea establecer noviembre solo haga

picker.wheels()[index]. selectValue (pickerWheel1Values[10]); 
0

Para cualquier persona que utilice Appium ver esta página aquí en el foro de discusión: https://groups.google.com/d/msg/appium-discuss/uYdRTdQDvpU/2I7KSFHnqFwJ

El flujo dice así:

  • obtener su elemento selector (nombre de la etiqueta: selector)
  • obtener todas las ruedas para ese selector (nombre de la etiqueta: rueda de selección)
  • puede enumerar los valores de esa rueda haciendo element.getAttribute ("values")
  • puede establecer el valor haciendo el elemento.setValue (myNewValue)

El último paso es malo y hay que utilizar SendKeys() en lugar de setValue()

Para un ejemplo real como la forma en que lo usé sería algo como esto

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(); 
Cuestiones relacionadas