Возможно, есть лучшее решение, но один из способов сделать это - просто использовать DateFormatter
s для преобразования введенной даты в строки (при условии, что строки в вашем средстве выбора даты используют полные названия месяцев и дни без начальных нулей):
extension DateFormatter {
static let monthFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "MMMM"
return formatter
}()
static let dayFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "d"
return formatter
}()
static let yearFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy"
return formatter
}()
}
extension Date {
var monthDayYearStrings: (month: String, day: String, year: String) {
(DateFormatter.monthFormatter.string(from: self),
DateFormatter.dayFormatter.string(from: self),
DateFormatter.yearFormatter.string(from: self))
}
}
А затем используйте его в своем тесте:
let (month, day, year) = yourPassedInDate.monthDayYearStrings
let datePickers = XCUIApplication().datePickers
datePickers.pickerWheels.element(boundBy: 0).adjust(toPickerWheelValue: month)
datePickers.pickerWheels.element(boundBy: 1).adjust(toPickerWheelValue: day)
datePickers.pickerWheels.element(boundBy: 2).adjust(toPickerWheelValue: year)