如何在 UITests 下重新排序单元格?

Posted

技术标签:

【中文标题】如何在 UITests 下重新排序单元格?【英文标题】:How to reorder cells under UITests? 【发布时间】:2015-09-10 13:00:44 【问题描述】:

UITestsUITableView 一起,我需要对单元格重新排序。是否可以?我试过myTable.swipeDown(),但它是在那个不响应重新排序的单元格位置调用的。我怎样才能做到这一点?有可能吗?

【问题讨论】:

【参考方案1】:

如果您正确设置了自定义单元格集的可访问性属性,则重新排序控件应该是可访问的。假设单元格将其可访问性标签/标识符分别设置为“LondonStreet”和“BakerStreet”。

您可以通过点击并从一个重新排序控件拖动到下一个来重新排序单元格。这些控件的可访问性标识符是根据单元格的信息自动设置的。

let app = XCUIApplication()
app.launch()

let topButton = app.buttons["Reorder LondonStreet"]
let bottomButton = app.buttons["Reorder BakerStreet"]
bottomButton.pressForDuration(0.5, thenDragToElement: topButton)

"Reorder " 前缀由操作系统设置。尝试使用 Accessibility Inspector 查看重新排序控件的值。

如果你想在你的机器上试用,我已经在我的UI Testing Cheat Sheet 中添加了一个示例和一些working sample code。

【讨论】:

如何准确检查单元格前缀?如何打开可访问性检查器? Accessibility Inspector 是安装在您机器上的应用程序,位于/Applications/Xcode.app/Contents/Applications。此工具可以显示您的单元格的前缀是什么。 我将辅助功能标识符设置为单元格,但重新排序按钮没有辅助功能标识符。它从单元格内标签的标题中获取标签。【参考方案2】:

要启用Accessibility Inspector,首先你必须去:

系统偏好设置 > 安全和隐私

然后是 Xcode > 打开开发者工具 > Accessibility Inspector

【讨论】:

【参考方案3】:

更通用的解决方案:(如果您不知道标题)

guard let firstCell = app.cells.allElementsBoundByIndex.first, let topButton = firstCell.buttons.allElementsBoundByIndex.last else  XCTFail("no reoder btn for first cell"); return 
guard let bottomCell = app.cells.allElementsBoundByIndex.last, let bottomButton = bottomCell.buttons.allElementsBoundByIndex.last else  XCTFail("no reoder btn for last cell"); return 
topButton.press(forDuration: 0.5, thenDragTo: bottomButton)

【讨论】:

这段代码如何按下重新排序按钮而不是单元格本身?

以上是关于如何在 UITests 下重新排序单元格?的主要内容,如果未能解决你的问题,请参考以下文章

重新排序单元格时如何在 UITableViewcell 内容视图中添加图像?

如何在锁定其中一些单元格时重新排序 UICollectionView 单元格

如何制作像 UITableView 一样的动画重新排序单元格?

如何以编程方式根据排序标准对单元格重新排序 SWIFT 4

在没有重新排序控制的情况下重新排序 UITableView

如何使用自定义按钮重新排序表格视图单元格,但不使用 ios 中的移动编辑图标