我想使用 fastlane 快照创建屏幕截图。我在三种不同的情况下面临问题。
案例 1: 我有一个集合视图,其中包含带有一个图像和一个标签的单元格。点击一个单元格将打开一个 VC(我们称之为 editVC),它是一种用于编辑从集合视图中点击的项目的表单。editVC 嵌入在导航控制器中。
记录测试如下
func testOne() {
let app = XCUIApplication()
app.tabBars.buttons["Collection View"].tap()
app.children(matching: .window).element(boundBy: 0).children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .other).element.children(matching: .collectionView).element.tap()
snapshot("01")
}
测试从 xcode 成功运行。
问题是当我从终端运行“fastlane 快照”时,生成的屏幕截图用于集合视图而不是 editVC。
案例 2: 一个视图控制器(称为 homeVC),它有一个滚动视图,其中包含多个水平滚动的集合视图。有问题的集合视图也有带有一个图像和一个标签的单元格。点击单元格将打开一个显示项目详细信息的视图控制器 (vc2)。此 vc2 嵌入在导航控制器中,并使用 storyBoard.instantiateViewController() 和 present() 方法调用。
下面是对 vc2 的测试记录点击。该测试运行良好,但“fastlane 快照”不会为 VC2 生成屏幕截图。它为 homeVC 生成。
func testVC2() {
let app = XCUIApplication()
app.tabBars.buttons["Home"].tap()
let scrollViewsQuery = app.scrollViews
scrollViewsQuery.otherElements.containing(.staticText, identifier:"label").children(matching: .collectionView).element(boundBy: 1).tap()
snapshot("vc2")
}
我尝试使用 expect() 添加waitForExpectations(timeout: 10, handler: nil)但即使在 10 秒后,转换似乎也不会发生在 vc2 上。
案例 3: 一个 Vc 有一个表格视图,其中包含带有图像和标签的单元格。为从表格单元格中点击并打开另一个具有集合视图的 VC 记录的 UI 测试如下所示,并失败并出现错误No matches found for Find: Descendants matching type ScrollView from input
func test123() {
XCUIApplication().tabBars.buttons["tab1"].tap()
let app = XCUIApplication()
let scrollViewsQuery = app.scrollViews
scrollViewsQuery.otherElements.containing(.staticText, identifier:"cellitem").children(matching: .collectionView).element(boundBy: 1).tap()
}
这些案例的原因可能是什么?希望我能够清楚地解释设置。
环境 - xcode 9.0
谢谢阿什什