我注意到UIAutomation脚本中有一些奇怪的行为,我曾经写过一段时间我没有跑过。我的断言失败了;在做了一些挖掘之后,我看到在迭代UIAElement的.elements()
时,子元素看起来并不等于它们自己。
这在过去对我有用,但至少在XCode 4.3.2中似乎被打破了
重新制作:
在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);
}
el1
和el2
似乎没有引用相同的对象。我不确定这是否是预期的行为,尽管这对我来说似乎很不对劲。如果有人有任何见解,我会很感激。
答案 0 :(得分:0)
不确定这是否有帮助,但您可以尝试使用===运算符来比较对象吗?
答案 1 :(得分:0)
这实际上是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;
}
答案 2 :(得分:0)
看一下tuneup.js(http://www.tuneupjs.org/)。这个库使iOS UIAutomation更加愉快。它做的一件事是扩展UIAElements的功能,使用调整代码中的上述行
var equals = (el1.equals(el2));