XCTest - UI 使用 XCUIElement 在自定义坐标上使用捏合手势进行测试?

XCTest - UI Testing with XCUIElement using pinch gesture on custom coordinates?

假设我有一个带有 UI 的应用程序,看起来有点像下图:

假设蓝色视图表现得像地图,其他颜色是其他可交互视图。

我需要做一个 XCTest,我需要在我厌倦的那个蓝色视图上“缩小” pinchWithScale:

[blueView pinchWithScale:0.5 velocity:-1];

不幸的是,这不起作用,因为红色视图或紫色视图之一(由于阴影和角的原因与蓝色视图重叠一点点)被触发而不是蓝色上的 pinch 手势查看。

我看到我可以通过以下方法获得 coordinateWithNormalizedOffset (similar like ) 视图:

- (XCUICoordinate *)coordinateWithNormalizedOffset:(CGVector)normalizedOffset;

这将允许我不使用整个蓝色视图来执行“缩小”手势:

XCUICoordinate* blueViewInset = [blueView coordinateWithNormalizedOffset:
                                 CGVectorMake(0.2f, 0.2f)];

但是 XCUICoordinate 对象 blueViewInset 不支持捏合手势。

因此,如何在坐标不在视图边界的 XCUI元素上执行捏合手势以“缩小”?

我也想知道是否有办法创建一个 XCUIElement 的扩展 custom pinch[=42= 】 手势?如果有任何提示,我也将不胜感激。

我发现我 可以(但不想) 在我的 [=10] 的顶部 添加另一个 空视图=] 限制为 其大小 的一半。到目前为止,这适用于我所有的案例,因为到目前为止没有其他视图重叠。它看起来像这样:

在那个空视图上执行 pinchWithScale 有效并且实际上捏 blueView.

这是一个非常丑陋的解决方案,因为我必须添加一个仅用于 UI 测试的视图。

如果有人知道如何在发布版本中删除它,请告诉我。

更新

我制作了一个构建步骤 运行 脚本,它仅在执行 UI 自动化测试目标时添加此视图。执行后,源代码控制用于撤消添加的视图。