断言失败:UI测试失败 - 获取元素的属性失败

Gor*_*ium 22 ios ios-simulator xcode7 xcode-ui-testing

Xcode(7.2和7.3)中进行 UI测试时,我的测试有时会失败并出现相当普遍的错误:

断言失败:UI测试失败 - 获取元素的属性失败

我倾向于在调用.hittable.tap()元素时遇到此错误,但我不知道为什么.我已经检查过我正在处理的元素都正确设置了它们的可访问性设置,并且它们所在的任何容器视图都没有启用accessibilty.唉,这似乎没有解决问题.

控制台日志显示:

UI Testing Failure - Failure fetching attributes for element <XCAccessibilityElement: 0x7e68ae50> pid: 89032, context: 4D9272C7-3024-4062-B0FA-E16EF426F17A, payload: {
    pid = 89032;
    "uid.elementID" = 1432;
    "uid.elementOrHash" = 2125772976;
}: Error Domain=XCTestManagerErrorDomain Code=13 "Error copying attributes -25202" UserInfo={NSLocalizedDescription=Error copying attributes -25202}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过搜索并设法发现它已经被记录但是似乎没有当前的解决方案(雷达链接),即使对于Xcode 7.3.

似乎有时如果我重新启动模拟器/设备,则不会发生此错误,但这不是一个好的解决方案.

Cit*_*nex 2

自动化代码有时似乎太快了,尽管可访问性层次结构的快照包含您的元素,但您的查询移动到下一条指令的速度太快,框架没有机会对点击进行操作( ) 您发送的方法。我已经能够通过使用 Joe Masilotti 的辅助函数等待元素首先可命中,然后在点击有问题的元素之前添加 sleep() 来最小化此错误。希望这可以帮助。

  • 是的,我一开始也是这么想的。然而,即使使用 Joe 的有用方法并结合令人讨厌但自由的 `sleep()` 使用,我仍然遇到这个问题。我认为这就是可访问性快照引用其对象的方式。我花了很多时间研究这个,似乎有时它会失去跟踪并意外引用错误的底层 UI 元素。我通过记录元素的内存地址并查看快照中的地址来检查这一点,它偶尔会出错,这意味着在错误的元素上调用了“tap()”,因此出现错误。 (3认同)