我正在我的应用程序中使用 compact 样式渲染 DatePicker,如下所示:
DatePicker("Date Selected", selection: $selectedDate, displayedComponents: [.date])
.accessibilityIdentifier("DatePicker")
.datePickerStyle(.compact)
我可以在 UI 测试中点击 DatePicker,在日历样式弹出窗口中选择我想要的日期,然后关闭弹出窗口,如下所示:
// 1. Show the DatePicker popup
application.datePickers["DatePicker"].tap()
// 2. Choose a date in the popup
application.datePickers.collectionViews.buttons["Friday, January 14"].tap()
// 3. Dismiss the DatePicker popup
application.datePickers["DatePicker"].tap()
(以上所有内容均在this示例应用程序中进行了演示。)
是否可以断言 DatePicker 现在显示我选择的日期?如果是的话,怎么办?
可以从日期选择器的层次结构中获取第一个按钮:
let label = application.datePickers["DatePicker"].buttons.firstMatch.value as? String
XCTAssertEqual(label, "Jan 14, 2022")
如果您查看元素层次结构,会显示类似的内容(从我的一项测试中获取的输出):
Element subtree:
→DatePicker, 0x106605ab0, {{244.3, 258.3}, {116.7, 34.3}}, identifier: '@#datePicker1'
Button, 0x106605bd0, {{244.3, 258.3}, {116.7, 34.3}}, label: 'Date Picker', value: Sep 5, 2023
因此有一个 Button,其 value 属性中包含所选数据。