【问题标题】:Javascript automatic type conversion is causing problems in my iPhone automator scriptJavascript 自动类型转换导致我的 iPhone automator 脚本出现问题
【发布时间】:2012-04-10 12:13:12
【问题描述】:

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

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

buttons["clr"].tap();

我想让它点击标题为“clr”的按钮,它确实做到了。

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

buttons["2"].tap();

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

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

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

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

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

var buttons=window.buttons();

【问题讨论】:

  • JavaScript 数组索引字符串。除了2,你还能给你的元素命名吗?
  • 你是如何填充你的数组的?

标签: javascript ios automator


【解决方案1】:

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

var twoButton = buttons.firstWithPredicate("name=='2'");

【讨论】:

    【解决方案2】:

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

    var buttons = {};
    

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

    buttons["2"]
    

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

    阅读以下内容了解更多信息:

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 2023-03-30
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多