我正在为iOS应用程序制作UI测试。我在寻找如何使用自动化测试日期选择器方面遇到了困难。目前,我被卡在尝试查找日期选择器本身以便更改值的阶段。
我已经搜索了许多有关此问题的线程,但没有找到任何相关信息。
如果有人对此有任何见解,将不胜感激。谢谢!
我正在为iOS应用程序制作UI测试。我在寻找如何使用自动化测试日期选择器方面遇到了困难。目前,我被卡在尝试查找日期选择器本身以便更改值的阶段。
我已经搜索了许多有关此问题的线程,但没有找到任何相关信息。
如果有人对此有任何见解,将不胜感激。谢谢!
要开始,请使用 Xcode 中的“记录 UI 测试”按钮,轻松找出如何在 UI 测试中访问 UIDatePicker
。
对于一个简单的 UIDatePicker
,在 date
模式下更改日期就像这样简单:
let datePickers = XCUIApplication().datePickers
datePickers.pickerWheels.element(boundBy: 0).adjust(toPickerWheelValue: "June")
datePickers.pickerWheels.element(boundBy: 1).adjust(toPickerWheelValue: "1")
datePickers.pickerWheels.element(boundBy: 2).adjust(toPickerWheelValue: "2015")
如果 datePicker 连接到一个 UILabel
,你可以检查标签中的文本是否已正确更新。对于任何需要支持多个本地化的人来说,更简单的方法是:
let dateComponent = Calendar.current.dateComponents([.day, .month, .year], from: Date())
let formatter = DateFormatter()
formatter.dateFormat = "MMMM"
let monthText = formatter.string(from: Date())
datePicker.pickerWheels[String(dateComponent.year!)].adjust(toPickerWheelValue: "2017")
datePicker.pickerWheels[monthText].adjust(toPickerWheelValue: "December")
datePicker.pickerWheels[String(dateComponent.day!)].adjust(toPickerWheelValue: "21")
Date()
是默认值)才能起作用。 - GobegoForward
SFSymbol,另一个带有goBackwards
。#if DEBUG
语句包围。DatePicker
。这样,您仍然可以测试不同的日期,但不再有不可靠的测试。