在 Swift 3 UI 测试中访问自定义视图组件中的元素

Posted

技术标签:

【中文标题】在 Swift 3 UI 测试中访问自定义视图组件中的元素【英文标题】:Access elements in a custom view component in Swift 3 UI testing 【发布时间】:2017-04-27 13:11:39 【问题描述】:

我是任何类型的 ios 编程的新手。我正在尝试为我的一个场景编写 UI 测试用例。

以下是我使用重新编码方法并点击自定义组件时得到的代码。

let button = XCUIApplication().children(matching: .window).element(boundBy: 0).children(matching: .other).element.children(matching: .button).element

在这个自定义组件中有两个按钮。我想知道选择了哪个按钮。为此,我需要识别按钮。但是在我点击自定义视图的地方,我都会得到相同的代码。

如何访问自定义视图中的每个组件。任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

在应用代码中的自定义视图中添加可访问性标识符。

let customView: UIView!
customView.accessibilityIdentifier = "myCustomView"

然后像这样访问内容:

let app = XCUIApplication()
let customView = app.otherElements["myCustomView"]
let button1 = customView.buttons.element(boundBy: 0)
let button2 = customView.buttons.element(boundBy: 1)
XCTAssertTrue(button1.isSelected)
XCTAssertFalse(button2.isSelected)

请注意,为了使您的测试具有确定性,您应该已经知道应该选择哪个按钮。这可确保您的测试每次运行时都测试相同的内容。

【讨论】:

【参考方案2】:

您需要让您的元素对 Accessibility 可见。

我建议你观看WWDC Session about UI Testing in Xcode,尤其是this part

【讨论】:

以上是关于在 Swift 3 UI 测试中访问自定义视图组件中的元素的主要内容,如果未能解决你的问题,请参考以下文章

在 XCode 中的 UI 测试期间无法访问自定义视图

Swift之SwiftUI自定义star rating评分组件

如何在 Swift UI 中删除 Picker 视图的灰色背景框

在 Swift 中测试自定义视图

自定义 UIView 的子视图未出现在 UI 测试中

防止在表格视图Swift中重用自定义单元格