Ios 为什么UIAElement';孩子们不平等吗?
我注意到我不久前写的一个UIAutomation脚本中有一些奇怪的行为,我已经很久没有运行了。我的主张失败了;在做了一些挖掘之后,我发现当迭代UIAEElement的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 =
.elements()
时,子元素似乎并不等于它们自己
这在过去对我来说就像预期的那样有效,但似乎至少在XCode 4.3.2中被破坏了
重编:
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中也可用。