我想使用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 snapshot”时,生成的屏幕截图是针对集合视图而不是editVC。
案例2: 视图控制器(称为homeVC),其滚动视图包含多个水平滚动的集合视图。 有问题的集合视图还包含具有一个图像和标签的单元格。点击单元格将打开一个视图控制器(vc2),它将显示项目详细信息。这个vc2嵌入在导航控制器中,并使用storyBoard.instantiateViewController()和present()方法调用。
以下是测试记录点击vc2。此测试运行正常,但“fastlane snapshot”不会为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")
}
我尝试使用expectation()添加 waitForExpectations(timeout:10,handler:nil),但即使在10秒后,vc2似乎也没有发生转换。
案例3: Vc具有包含图像和标签的单元格的表格视图。 记录用于从表格单元格中打开并打开另一个具有集合视图的VC的UI测试如下所示,并且失败并显示错误找不到与查找匹配的匹配:从输入匹配类型ScrollView的后代
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
由于 阿希什