在 iOS 上滑动即可关闭视图 13 XCUITest

Dismiss view with swipe on iOS 13 XCUITest

我一直在编写 UITest,在录制了打开模态视图的测试并将模态向下滑动到屏幕底部以关闭它之后,我得到了一些这样的代码(因为有一个 table 在那里查看):

    var tablesQuery = app.tables.element(boundBy: 0)
    tablesQuery.swipeDown()

问题是,这并不总是有效。有时(尤其是 iPad),在回放测试时,视图会向下移动一点并跳回原位(而不是消失)。

Apple 一定遇到了同样的问题,并在 iOS 13 个 XCUITests 上提出了更好的解决方案来关闭模态视图 (.present)。

有没有一种方法可以可靠地消除核心测试框架支持的这些傻瓜,这样我就不必对手势或诸如此类的东西进行任何自定义摆弄?

感谢您的帮助!

如果没有任何明显的解决方案,我想黑客攻击的重型向下手势也可以回答这个问题...因为所有答案都是针对非常小或轻微的滑动版本,而不是全屏解雇手势。但我希望您首先了解受支持的解决方案(例如,您知道不存在受支持的解决方案吗?)

感谢您的帮助! - supported/maintained Apple 通过 XCTest 框架消除视图的方式,或者关于此不存在的信息将回答这个问题。

合成的 swipeDown() 手势不是很可靠,或者只是没有保持到足以在每种情况下产生模态解雇。

您可以创建一个自定义的向下滑动手势,如下所示:

var tablesQuery = app.tables.element(boundBy: 0)
let start = tablesQuery.coordinate(withNormalizedOffset:  CGVector(dx: 0.0, dy: 0.0))
let finish = tablesQuery.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 3.0))
start.press(forDuration: 0.5, thenDragTo: finish) 

您可以根据需要使用 dy 偏移值,以便在屏幕上进行更长的滑动。

我刚开始玩 UI 测试,发现如果你添加一个 velocity 轻扫动作 sheet 有效。

.swipeDown(velocity: XCUIGestureVelocity.fast)

https://developer.apple.com/documentation/xctest/xcuigesturevelocity