Ios 为什么UIAElement';孩子们不平等吗?

Ios 为什么UIAElement';孩子们不平等吗?,ios,xcode,instruments,ios-ui-automation,Ios,Xcode,Instruments,Ios Ui Automation,我注意到我不久前写的一个UIAutomation脚本中有一些奇怪的行为,我已经很久没有运行了。我的主张失败了;在做了一些挖掘之后,我发现当迭代UIAEElement的.elements()时,子元素似乎并不等于它们自己 这在过去对我来说就像预期的那样有效,但似乎至少在XCode 4.3.2中被破坏了 重编: 创建单一视图应用程序 在视图中抛出一些元素,在元素上设置可访问性标签,以便UIAutomation能够拾取这些元素 在UIAutomation中运行以下脚本: var elements =

我注意到我不久前写的一个UIAutomation脚本中有一些奇怪的行为,我已经很久没有运行了。我的主张失败了;在做了一些挖掘之后,我发现当迭代UIAEElement的
.elements()
时,子元素似乎并不等于它们自己

这在过去对我来说就像预期的那样有效,但似乎至少在XCode 4.3.2中被破坏了

重编:

  • 创建单一视图应用程序
  • 在视图中抛出一些元素,在元素上设置可访问性标签,以便UIAutomation能够拾取这些元素
  • 在UIAutomation中运行以下脚本:

    var elements = UIATarget.localTarget().frontMostApp().mainWindow().elements();
    for (var i = 0; i < elements.length; i++) {
      var el1 = elements[i];
      var el2 = elements[i];
      var equals = (el1 == el2);
      UIALogger.logMessage(el1.label() + " is equal to " + el2.label() + " ? " + equals);
    }
    
    var elements=uiatatarget.localTarget().frontMostApp().mainWindow().elements();
    对于(var i=0;i
  • 请确保
    el1
    el2
    似乎没有引用同一对象

  • 我不确定这是否是预期的行为,尽管这对我来说似乎很不合适。如果有人有任何见解,我将不胜感激。

    不确定这是否有帮助,但您能尝试===运算符来比较对象吗?

    这实际上是UIAutomation软件中的一个已知错误。我提出的解决方法是基于元素的所有可用属性进行测试。这真是个麻烦事

     var el1 = ELEMENT_1;
    
     var el1x = el1.rect().origin.x;
     var el1y = el1.rect().origin.y;
     var el1w = el1.rect().size.width;
     var el1h = el1.rect().size.height;
     var el1n = el1.name();
    
     var el2 = ELEMENT_2;
    
     var el2x = el2.rect().origin.x;
     var el2y = el2.rect().origin.y;
     var el2w = el2.rect().size.width;
     var el2h = el2.rect().size.height;
     var el2n = el2.name();
    
     if(el1x == el2x && el1y == el2y &&
          el1w == el2w && el1h == el2h &&
          el1n == el2n)
     {
          // Elements are equal
          return true;
     }
    
    看看tuneup.js()。这个库使iOS UIAutomation更加令人愉快。它所做的一件事是扩展UIAEElements的功能,使用tuneup在代码的上面一行


    var等于=(el1.equals(el2))

    遗憾的是,这不起作用。。毫不奇怪,
    =
    应该强制对象是否属于同一类型,这实际上比
    ==
    的检查更弱。这似乎非常相关:因为我将此特定函数添加到tuneup.js,我应该指出,它在的Extensions.js中也可用。