麻烦从UIAutomation中的UIAElementArray按名称获取元素
我在UIAutomation脚本中按名称获取界面元素时遇到问题。
我已经为文本控件设置了辅助function面板:
我知道我有正确的父视图,因为此代码将用于设置字段内容:
var view = UIATarget.localTarget().frontMostApp().mainWindow(); var textfields = view.textFields(); textfields[0].setValue("testuser");
不幸的是,如果我尝试按名称访问该字段,因为文档似乎表明我应该能够做到,我收到一个错误:
var view = UIATarget.localTarget().frontMostApp().mainWindow(); var textfields = view.textFields(); textfields['foo'].setValue("testuser");
无法对无效元素执行操作:来自target.frontMostApp()的UIAElementNil.mainWindow()。textFields()[“foo”]
有没有人知道为什么这个名字function似乎不适合我?
感谢您的任何见解!
如果使用辅助function层,则必须在设备/模拟器中启用它:
设置 – >常规 – >辅助function – >辅助function检查器 – >开
似乎UI Automation在Title字段中查找元素的名称,而不是在文档的Accessibility Label字段中查找; 至少,那是我的经历。 向UI元素添加标题(通过属性)应该会产生所需的行为。
更新:在进一步实验后,现在看来要编辑的字段可能是可访问性标识符(而不是标签),AFAICT只能以编程方式设置。
根据UI自动化参考指南
UIAElementArray部分,你可能想尝试这样:
var textfields = view.textFields(); textfields.withName("foo")[0].setValue("testuser");