4

当测试在 iPad Pro 12.9 英寸上运行时,我的 Xcode UI 测试代码因此错误而失败。对于所有 iPhone 型号和 iPad Retina,都没有看到错误。

断言失败:EasyTVUITests.m:81:UI 测试失败 - 计算单元格 0x600000377dc0 的无效命中点(-1.0、-1.3):特征:8589934592、{{411.0、-1373.0}、{813.3、106.3}}

失败的测试代码行是这一行:

[[app.tables[@"programs"].cells elementBoundByIndex:17] tap];

该错误实际上是什么意思,我该如何调试它?

这是错误的完整运行:

点击单元格

Wait for app to idle

Find the Cell

   Snapshot accessibility hierarchy for com.[hidden]

   Find: Descendants matching type Table

   Find: Elements matching predicate '"programs" IN identifiers'

   Find: Descendants matching type Cell

   Find: Element at index 17

   Wait for app to idle

Synthesise event

   Assertion Failure: EasyTVUITests.m:81: UI Testing Failure - Computed invalid hit point (-1.0, -1.3) for Cell 0x600000377dc0: traits: 8589934592, {{411.0, -1373.0}, {813.3, 106.3}}

索引为 17 并不重要——我只是想选择一个随机单元格。我尝试了另一个索引,但没有任何区别。

从视觉上看,iPad Pro 版本看起来与 iPad Retina 版本没有“错误”或不同。

这是 Xcode 8.1,iPad 模拟器运行 iOS 10.1。

4

3 回答 3

3

我在 iPad Pro(12.9 英寸)上遇到了完全相同的问题,而我的代码在 iPad Retina 上运行流畅。

XCUIElement's isHittable您是否在失败线之前的某个地方使用测试?因为由于某种原因,在我的代码中,在 iPad Pro(12.9 英寸)上运行此测试会返回YES,而在所有其他模拟器上它会返回NO.

我发现它比较了在不同模拟器上运行的控制台输出。希望能帮助到你。

于 2016-11-18T17:44:00.503 回答
2

我也遇到过这种问题,一个无效的生命值,但是对于一个显示在屏幕上的元素,所以不是滚动问题。

我设法使用本页http://samwize.com/2016/02/28/everything-about-xcode-ui-testing-snapshot/中描述的强制点击方法为 iPad Retina 和 iPad Pro 9.7 英寸修复它

但它不适用于 12.9 英寸 iPad Pro,因为它的 isHittable 属性是正确的。

最后的问题是我试图在显示弹出窗口时点击主视图上的一个元素,所以虽然它实际上是可点击的,但 xcuitests 认为它​​不是。我现在执行一个虚拟 forceTap 操作以在执行曾经失败的点击操作之前强制关闭弹出框。适用于所有三种 iPad。

于 2017-02-02T20:27:19.873 回答
2

错误消息表示您正试图在无效坐标处执行敲击。在这种情况下,(-1.0, -1.3),它位于屏幕左上角的左侧和上方。

它试图命中的单元格的位置似乎是有效的——它的 x 坐标是正的,它的 y 坐标是负的,表明你想要的单元格在垂直滚动视图中位于屏幕上方。如果是这种情况,并且您可以验证是否可以手动点击第 17 个单元格,我认为您应该在 bugreport.apple.com 上向 Apple 提交错误。

于 2016-11-14T07:56:07.573 回答