0

我是一个javascript新手。我的 iOS 应用程序中有一堆按钮。他们中的一些人的名字中有字母;其他人只是用数字命名。我正在尝试编写 UI 测试脚本。在脚本中,我有一个名为按钮的数组,它表示对应于 UIButtons 的 UIAElement 对象数组。

如果我执行以下操作,效果很好:

buttons["clr"].tap();

我希望它点击标题为“clr”的按钮,它确实如此。

但我找不到任何方法来点击标题为“2”的按钮。如果我执行以下操作,它对我不起作用:

buttons["2"].tap();

发生的情况是系统的某些部分决定点击数组中索引 2 处的按钮。这与名称为 2 的按钮不同。

谁能解释一下?有没有办法强迫它把我的弦当作弦来对待?我尝试了一些变体,但没有一个有帮助,例如

buttons[String(2)].tap();

编辑:将其命名为 2 之外的其他名称是可能的,但很尴尬。该应用程序是一个计算器,而 2 似乎正是执行此操作的键的正确名称。这些名称用于向残障人士展示应用程序。我不知道所有细节,但从长远来看,“2”可能会比“2”更好。

为了回答有关我如何填充数组的问题,它是通过Apple 的 UIAElement 类。具体来说,我有一个对象窗口,它也是一个 UIAElement,我通过

var buttons=window.buttons();
4

2 回答 2

1

您应该使用“普通”对象而不是数组:

var buttons = {};

然后,您可以使用与数组相同的方括号语法来读取和写入属性:

buttons["2"]

JavaScript 数组是一种特殊类型的对象,它将以不同的方式处理数字索引(即使您尝试将它们指定为字符串)。

阅读以下内容以获取更多信息:

于 2012-03-27T01:14:34.310 回答
1

以下代码解决了我的问题。但我仍然对潜在的语言问题感兴趣。

var twoButton = buttons.firstWithPredicate("name=='2'");
于 2012-03-27T00:16:47.250 回答