当isPagingEnabled
属性设置为true
时,我一直试图用水平滚动方式滚动UICollectionView
到下一页。我已经研究了好几天了,做了很多研究,但我找不到任何像我这样的病例。如果你已经有这个问题,如果你已经找到了解决方案,这将是伟大的分享你的解决方案与我的方式。以下是我目前的案例;
func sampleTest() {
let collectionView = app.collectionViews[.sampleCollectionView]
collectionView.waitUntil(.exists)
let totalPageCount = collectionView.cells.count
guard totalPageCount > 0 else {
XCTFail("No pages could find in collection to take snapshot.")
return
}
for currentPage in 1...totalPageCount {
snapshot("Page\(currentPage)")
collectionView.swipeLeft()
}
}
这里,XCUIElement
的swipeLeft()
方法在我的例子中没有按预期工作。当我调用该方法时,它并不移动到下一页。由于isPagingEnabled = true
语句,它稍微滑动并返回。
此外,还有一个问题是collectionView.cells.count
计算错误。它总是返回1。我认为问题的原因是关于可重用性。因为其他细胞还没有出队。collectionView.cells.count
不像我想的那样工作。
1条答案
按热度按时间oiopk7p51#
我遇到过一个类似的问题,分页在UI测试中表现不佳,因为我的第一个单元格有一个左内容插入,并且居中,而下一个单元格总是窥视视图,因此按collectionView边界的大小滚动并没有给予预期的结果。
相反,我在collectionView上禁用了
isPagingEnabled
,并使用这些UIScrollViewDelegate
方法来“捕捉”要显示的下一个单元格的中心,这取决于用户(或测试)的滑动方式:记录开始减速时的内容偏移量:
将当前视图中最左边或最右边的单元格居中:
最后,我设置了
bounces = false
来简化逻辑,并防止在collectionView单元格的任意一端调用该方法时出现错误行为。