有一种方法可以执行“长”向左滑动手势来删除 XCUITest 中的元素

Posted

技术标签:

【中文标题】有一种方法可以执行“长”向左滑动手势来删除 XCUITest 中的元素【英文标题】:There is a way to do a "long" Swipe Left gesture to delete an element in XCUITest 【发布时间】:2018-02-21 15:37:44 【问题描述】:

我正在尝试删除一个向左滑动的元素。此选项在我的应用程序中以两种方式存在。

    向左短扫,出现删除按钮,然后你可以按下它。这里没问题。 向左长滑,元素将被删除,无需再次询问。

第二个选项我无法使用 XCUIElements 函数重现它。

我发现的唯一功能是 element.swipeLeft() 但没有找到如何向左长滑动。

【问题讨论】:

【参考方案1】:

您可以使用press(forDuration:thenDragTo:) 从单元格的一侧拖动到另一侧。

let app = XCUIApplication()
let cell = app.cells.element(boundBy: 0) // first cell on the page

let rightOffset = CGVector(dx: 0.95, dy: 0.5)
let leftOffset = CGVector(dx: 0.05, dy: 0.5)

let cellFarRightCoordinate = cell.coordinate(withNormalizedOffset: rightOffset)
let cellFarLeftCoordinate = cell.coordinate(withNormalizedOffset: leftOffset)

// drag from right to left to delete
cellFarRightCoordinate.press(forDuration: 0.1, thenDragTo: cellFarLeftCoordinate)

请注意,在从元素创建坐标时,您会给出一个归一化为元素大小的CGVector(其中1.0 是元素的全宽/高度),但如果您从一个坐标,你必须给出一个绝对值的CGVector

【讨论】:

以上是关于有一种方法可以执行“长”向左滑动手势来删除 XCUITest 中的元素的主要内容,如果未能解决你的问题,请参考以下文章

手势识别器滑动以从核心数据中删除

只需一个手势滑动即可删除单元格

未调用时滑动手势从右向左移动

通过向左滑动选择 CollectionView 单元格(Swift 5)

快速手势识别器 tableviewcell 被否决

在点击手势上重置 CollectionviewCell 位置