/ / Problemas para obtener elementos por nombre de UIAElementArray en UIAutomation - ios, ios-ui-automation

Problemas para obtener elementos por nombre de UIAElementArray en UIAutomation - ios, ios-ui-automation

Tengo problemas para obtener los elementos de la interfaz por nombre en un script de automatización UIA.

He configurado el panel de accesibilidad para un control de texto:

panel de accesibilidad

Y sé que tengo la vista principal correcta, ya que este código funcionará para establecer el contenido del campo:

var view = UIATarget.localTarget().frontMostApp().mainWindow();
var textfields = view.textFields();
textfields[0].setValue("testuser");

Desafortunadamente, si trato de acceder al campo por su nombre, ya que los documentos parecen indicar que debería poder hacerlo, aparece un error:

var view = UIATarget.localTarget().frontMostApp().mainWindow();
var textfields = view.textFields();
textfields["foo"].setValue("testuser");

No se puede realizar una acción en un elemento no válido: UIAElementNil de target.frontMostApp (). MainWindow (). TextFields () ["foo"]

¿Alguien tiene alguna idea de por qué la funcionalidad de buscar por nombre no parece estar funcionando aquí para mí?

Gracias por cualquier idea!

Respuestas

3 para la respuesta № 1

Si está trabajando con la capa de accesibilidad, debe habilitarla en el dispositivo / simulador:

Configuración-> General-> Accesibilidad-> Inspector de accesibilidad-> ENCENDIDO


1 para la respuesta № 2

Parece que UI Automation busca elnombre del elemento en el campo Título en lugar del campo Etiqueta de accesibilidad documentada; al menos, esa es mi experiencia. Agregar un título a sus elementos de la interfaz de usuario (a través de atributos) debería dar como resultado el comportamiento deseado.

Actualización: ahora parece, después de más experimentación, que el campo a editar puede ser el Identificador de accesibilidad (no la Etiqueta), que AFAICT solo se puede configurar mediante programación.


0 para la respuesta № 3

De acuerdo a Guía de referencia de automatización de la interfaz de usuario

UIAElementArray sección, puede intentar así:

var textfields = view.textFields();

textfields.withName("foo")[0].setValue("testuser");