在 iOS 13 XCUITest 上滑动关闭视图

The*_*eff 4 ios xctest swift xcode-ui-testing

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

    var tablesQuery = app.tables.element(boundBy: 0)
    tablesQuery.swipeDown()
Run Code Online (Sandbox Code Playgroud)

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

Apple 一定有同样的问题,并提出了更好的解决方案来消除 iOS 13 XCUITests 上的模态视图 (.present)。

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

谢谢你的帮助!

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

谢谢你的帮助!- Apple 通过 XCTest 框架拒绝视图的方式支持/维护,或者有关此不存在的信息将回答此问题。

ati*_*oSE 9

合成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) 
Run Code Online (Sandbox Code Playgroud)

您可以dy根据需要使用偏移值进行更长时间的屏幕滑动。


小智 9

我刚刚开始进行 UI 测试,发现如果添加velocity滑动操作,操作表就可以工作。

.swipeDown(velocity: XCUIGestureVelocity.fast)
Run Code Online (Sandbox Code Playgroud)

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