测试在 iPhone 6s Plus 上运行良好,但在 iPhone 5s 上运行失败

Test runs fine on iPhone 6s Plus but fails on iPhone 5s

我有一个测试可以在我的应用程序中选择特定的提要。它在 iPhone 6s 上工作正常,但在 iPhone 5s 上失败,出现元素未找到错误。经过进一步调查,似乎视图层次结构中缺少提要。我想出了一个解决方法,类似于:

if (running on iPhone 5s) {
  // Scroll down by 50 units.
  // Then locate the feed and check that it's visible.
  [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"feed10")] 
      assertWithMatcher:grey_sufficientlyVisible()];
}

虽然这看起来不错,但我想知道是否有更好的方法在屏幕上找不到元素时有条件地滚动。

EarlGrey 提供 usingSearchAction:onElementWithMatcher: api 来查找需要滚动到的元素才能找到它们。由于您使用的是 grey_sufficientlyVisible(),因此需要元素在屏幕上可见才能通过 assertWithMatcher 检查。从他们的常见问题解答中,您可以将您的断言更改为以下内容:

if (running on iPhone 5s) {
  [[EarlGrey selectElementWithMatcher:matcher]
                  usingSearchAction:grey_scrollInDirection(kGREYDirectionDown, 50)
               onElementWithMatcher:grey_accessibilityID(@"feed10")
                  assertWithMatcher:grey_sufficientlyVisible()];
}

仅供参考 - 您使用 kGREYDirectionDown 因为它表示视口变化的方向,而不是为滚动完成的滑动方向。