Trouble Getting Elements by Name from UIAElementArray in UIAutomation

青春壹個敷衍的年華 提交于 2019-12-06 12:37:26

问题


I'm having trouble getting interface elements by name in a UIAutomation script.

I have set up the accessibility panel for a text control:

And I know that I have the right parent view, as this code will work to set the field contents:

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

Unfortunately, if I try to access the field by name, as the docs seem to indicate I should be able to do, I get an error:

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

Cannot perform action on invalid element: UIAElementNil from target.frontMostApp().mainWindow().textFields()["foo"]

Does anybody have any idea why the find-by-name functionality doesn't seem to be working here for me?

Thanks for any insight!


回答1:


If you are working with the accessibility Layer, you must to enable it in the Device/Simulator:

Settings-> General-> Accessibility-> Accessibility Inspector-> ON




回答2:


It appears that UI Automation looks for the element's name in the Title field rather than the documented Accessibility Label field; at least, that's my experience. Adding a Title to your UI elements (via Attributes) should result in the desired behaviour.

Update: It now appears, after further experimentation, that the field to edit may be the Accessibility Identifier (not Label), which AFAICT can only be set programmatically.




回答3:


According to UI Automation Reference Guide

UIAElementArray section, you may want to try like this:

var textfields = view.textFields();

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


来源:https://stackoverflow.com/questions/9365050/trouble-getting-elements-by-name-from-uiaelementarray-in-uiautomation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!