4

我想使用 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

谢谢阿什什

4

0 回答 0