我一直在编写UITests,并记录了一个测试以打开模式视图,然后将模式向下滑动到屏幕底部以将其关闭,我得到了这样的代码(因为在其中有一个表格视图那里):
var tablesQuery = app.tables.element(boundBy: 0)
tablesQuery.swipeDown()
问题是,这并不总是有效。有时(尤其是在iPad上),在播放测试时,视图会向下移动一点并跳回原位(而不是关闭)。
Apple必须遇到相同的问题,并提出了更好的解决方案以在iOS 13 XCUITests上消除模式视图(.present)。
是否有一种方法可以可靠地消除核心测试框架所支持的这些吮吸者,所以我不必对手势进行任何自定义摆弄?
感谢您的帮助!
如果没有任何明显的解决方案,我猜想是被砍掉的重型向下手势也可能会回答这个问题...因为所有答案都是针对很小或很小的滑动版本,而不是全屏解雇手势。但我想先在支持的解决方案上使用您的上下文(例如,您知道不存在支持的解决方案吗?)
感谢您的帮助! -Apple支持/维护的通过XCTest框架消除视图的方式,或者有关不存在的信息将回答此问题。
答案 0 :(得分:2)
我刚刚开始使用UI测试,发现如果添加velocity
,则可以清除操作表。
.swipeDown(velocity: XCUIGestureVelocity.fast)
https://developer.apple.com/documentation/xctest/xcuigesturevelocity
答案 1 :(得分:0)
合成的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
偏移值来进行更长的屏幕滑动操作。