【问题标题】:Xcode 8.1 UI Testing twoFingerTap() fails on Google Maps viewXcode 8.1 UI 测试 twoFingerTap() 在谷歌地图视图上失败
【发布时间】:2016-11-02 02:51:19
【问题描述】:

自从升级到 Xcode 8.1 后,我使用 twoFingerTap() 缩小 Google 地图 GMSMapView 的 UI 测试一直失败

断言失败:Element.swift:135:UI 测试失败 - 无法找到未遮挡的区域来执行事件。

前面的消息是

通过排除遮挡元素 StatusBar 和“视图的标识符”的帧来重新计算可见帧

有人知道我应该怎么做吗?尝试tapWithNumberOfTaps(1, numberOfTouches: 2) 并发生同样的事情。

注意。 问题肯定只出在多指点击上——doubleTap()pinchWithScale(2.0, velocity: 1.0) 在 Xcode 8.1 下仍然可以正常工作。 pinchWithScale(0.5, velocity: -1.0) 继续移动原点而不是缩放,这也是它在 Xcode 7 中对 GMSMapView 所做的。

【问题讨论】:

  • 同样的问题 (Xcode 8.2 beta (8C30a), Swift 3.0.2) ,你找到解决方法了吗?在 iPhone 5 或 SE 等 4 英寸设备模拟器上,它似乎更容易失败。在大型设备上我遇到的问题要少得多......
  • 最近我可以通过索引挖掘子视图并手动点击它们。这工作......偶尔。目前我们所有的谷歌地图测试仍然被禁用并回到手动列表:(
  • 好的,谢谢,希望有更强大的解决方案????
  • @alexcurylo 您找到解决问题的方法了吗?
  • @Ramis 我最终做的是在 UI 测试时创建一个“缩放”按钮并点击它

标签: ios swift xcode xcode-ui-testing gmsmapview


【解决方案1】:

我不确定您是在绘制 UI 还是使用情节提要。尽管如此,您似乎并没有正确地将元素绘制到视图中。也许使用约束,您可以将元素保护到您的视图中。

【讨论】:

  • 使用self.googleMapView = [[GMSMapView alloc] init]; 并将其accessibilityIdentifieraddSubview 直接设置为容器。从 Xcode 7 运行时工作正常。所以在这里看不到约束有什么帮助。
  • @alexcurylo - 我将谷歌地图视图添加为我的应用程序中的子视图并设置它的可访问性标识符仍然无法访问。我想为地图视图的存在编写 UITest 并点击特定的标记。我试过了从 app.debugdescription 中查找视图层次结构,但在其中找不到地图视图。任何帮助,如何实现?
  • 每次运行时的层次结构都不同,而且似乎没有办法可靠地识别我发现的特定标记。
【解决方案2】:

我刚刚升级到 Xcode9(测试版),这个问题似乎已经解决了

【讨论】:

    【解决方案3】:

    不确定您是否已经解决了您的问题,但是如果您将 Google 地图放在另一个视图中,然后在情节提要中设置它的可访问性(确保已选中可访问性的“启用”和“启用用户交互”),这将有所帮助

    然后你可以在 otherElements 中找到它并点击或双击它。

    【讨论】:

      猜你喜欢
      • 2018-12-06
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多