iOS UI Test Dynami c Datepicker - PullRequest
       82

iOS UI Test Dynami c Datepicker

1 голос
/ 28 апреля 2020

Я пытаюсь преобразовать существующий тест пользовательского интерфейса во что-то более надежное. В основном у меня есть код, который выглядит следующим образом:

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")

Однако я хотел бы иметь возможность передавать дату MM/DD/YYYY и динамически использовать счетчик.

Помимо создания большая функция, которая:

  1. Анализирует 01.01.2020 до 3-х дюймов
  2. Преобразует первый int в строку (01) в (January)

Есть ли более простой способ?

1 Ответ

3 голосов
/ 28 апреля 2020

Возможно, есть лучшее решение, но один из способов сделать это - просто использовать 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)
...