如何通过UI测试执行“向左滑动”操作

4

我该如何通过UI测试在Xcode中执行“向左滑动”操作以触发segue并更改视图控制器?

录制的代码如下:

[[[[[[[XCUIApplication alloc] init].otherElements containingType:XCUIElementTypeNavigationBar identifier:@"UIView"] childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element tap];

但是看起来它并没有起作用——就我所看到的,视图控制器没有切换到新的视图控制器。

3个回答

10

很难确定您要滑动哪个视图。以下代码将在标题为“Swipe Me”的标签上执行“向左滑动”手势。一旦您定位了您的视图,遵循相同技术应该很容易。

XCUIApplication *app = [XCUIApplication alloc] init];
[app.labels[@"Swipe Me"] swipeLeft];

了解更多有关swipeLeft以及您可以在元素上执行的附带手势。 如果您正在寻找更通用的“备忘单”,我也为您准备好了


没错,它可以工作了,非常感谢。顺便问一下,为什么我的测试应用程序会运行多次?我只有 setUptearDown 的存根方法以及以下代码的 一个 UI 测试 -- `XCUIApplication *app = [[XCUIApplication alloc] init]; [app.images[@"swipeleft"] swipeLeft];XCUIElement *element = app.buttons[@"icon share"]; [self waitForElementToAppear:element withTimeout:5];` - FrozenHeart
1
@Joe Masilotti,我能更准确地处理向左滑动手势吗?例如带距离的向左滑动? - Ryan Chou
@RyanChou 你可以使用XCUICoordinate API并从一个元素拖动到另一个元素。参考这个下拉刷新的示例 - Joe Masilotti
@JoeMasilotti 太棒了。非常感谢。我会仔细阅读这个例子。它可能满足我的要求。 - Ryan Chou

3
如果您无法在应用程序上进行向左滑动
app.swipeLeft()

尝试在scrollView上调用它,如下:
app.scrollViews.element(boundBy: 0).swipeLeft()

2

不需要知道UI栈上当前可用的UI元素,以下代码对我有效:

app.windows.element(boundBy:0).swipeLeft()

该代码涉及IT技术。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接