麻烦从UIAutomation中的UIAElementArray按名称获取元素

时间:2012-02-20 16:55:13

标签: ios ios-ui-automation

我在UIAutomation脚本中按名称获取界面元素时遇到了问题。

我已经为文本控件设置了辅助功能面板:

accessibility panel

我知道我有正确的父视图,因为此代码将用于设置字段内容:

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”]

有没有人知道为什么这个名字找功能似乎不适合我?

感谢您的任何见解!

3 个答案:

答案 0 :(得分:3)

如果您正在使用辅助功能层,则必须在设备/模拟器中启用它:

  

设置>常规 - > Accessibility->辅助功能检查员 - > ON

答案 1 :(得分:1)

UI Automation似乎在Title字段中查找元素的名称,而不是在文档的Accessibility Label字段中查找;至少,那是我的经历。向UI元素添加标题(通过属性)应该会产生所需的行为。

更新:经过进一步的实验,现在看来要编辑的字段可能是辅助功能标识符(而非标签),AFAICT只能以编程方式设置。

答案 2 :(得分:0)

根据UI Automation Reference Guide

UIAElementArray 部分,您可能想尝试这样:

var textfields = view.textFields();

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