UI测试时无法触发删除照片窗口

Posted

技术标签:

【中文标题】UI测试时无法触发删除照片窗口【英文标题】:Unable to trigger the Photo deletion window during UI testing 【发布时间】:2018-12-21 14:49:25 【问题描述】:

我正在尝试在 XCode 10 中创建一个 UI 测试,其中包括将出现以下窗口的步骤:

(仅供参考 - 这是为了支持视频脚本的创建,因此我们希望为观看者提供完整的体验)

最初,我只是记录了步骤以确保我正确地捕获了这个请求屏幕,并且 XCode 尽职尽责地注销了所有步骤。

以下是 XCode 生成的稍作修改的版本。作为记录,使用未修改的版本也失败了。

func testDeletePhotos() 
    let app = XCUIApplication()
    continueAfterFailure = false
    app.launch()
    // Select two images from within app to delete
    let collectionViewsQuery = app.collectionViews
    collectionViewsQuery.children(matching: .cell)
        .element(boundBy: 1)
        .children(matching: .other)
        .element.children(matching: .other)
        .element(boundBy: 1)
        .tap()
    collectionViewsQuery.children(matching: .cell)
        .element(boundBy: 0).children(matching: .other)
        .element.children(matching: .other)
        .element(boundBy: 1)
        .tap()
    let navigationBar = app.navigationBars["MY_APP_NAME"]
    // Select the "Trash can" in nav bar to start delete process
    navigationBar.buttons["Delete"].tap()
    // Prompt appears properly and text is a precise match for string below
    // Below step fails with error seen below
    app.alerts["Allow “MY_APP_NAME” to delete 2 photos?"].buttons["Delete"].tap()

    navigationBar.buttons["Back"].tap()

但是,当我尝试重新运行此脚本时,它无法找到如上图所示的 删除 按钮。

UI 测试活动:断言失败:MyVideoScript.swift:###: 否 为查找找到匹配项:来自输入 ( 应用程序,pid:17838,标签:'MY_APP_NAME')

此外,由于有人可能会提到这一点 - 照片的数量是相同的,因为这会改变警报中出现的文本。我还尝试使用app.alerts.element(boundBy: 0) 代替名称搜索并得到相同的错误。

【问题讨论】:

【参考方案1】:

点击可能在警报完成出现之前执行。你可以告诉测试等待它:

let deleteButton = app.alerts["Allow “MY_APP_NAME” to delete 2 photos?"].buttons["Delete"]
let exists = NSPredicate(format: "exists == 1")

expectationForPredicate(exists, evaluatedWithObject: deleteButton, handler: nil)
waitForExpectationsWithTimeout(5, handler:  error in
    // check for error, if none:
    deleteButton.tap()
)

【讨论】:

谢谢,但这不会显示为警报,因为它是由操作系统驱动的,我无法直接与它交互。

以上是关于UI测试时无法触发删除照片窗口的主要内容,如果未能解决你的问题,请参考以下文章

在 ubuntu 上使用 Skia 库测试无法获得 UI 显示

使用 UI 测试测试操作扩展

如何在UI测试中将照片添加到模拟器的相机胶卷

在玩笑测试中在 Material UI Select 上触发 mousedown 事件时,我总是收到“anchorEl”警告

运行 UI 测试时无法捕获视图层次结构

UI测试滑动删除表格视图单元格