测试在 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
因为它表示视口变化的方向,而不是为滚动完成的滑动方向。
我有一个测试可以在我的应用程序中选择特定的提要。它在 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
因为它表示视口变化的方向,而不是为滚动完成的滑动方向。