У меня есть выборщик с несколькими элементами: "Красный", "Зеленый", "Желтый", "Черный". В моем тестировании пользовательского интерфейса мне нужно выбрать из него конкретный элемент "Зеленый". Я использую API тестирования XCTest UI, которые были внедрены с Xcode 7.
То, что мне удалось сделать до сих пор, - это прорисовать весь вид подборщика в unit test. Это не идеально, потому что он всегда меняет вид подборщика на нижний элемент (при прокрутке вверх).
let app = XCUIApplication()
app.launch()
app.pickers.elementAtIndex(0).swipeUp()
XCTAssert(app.staticTexts["Selected: Black"].exists)
Другим, но очень похожим способом изменения представления выбора является вызов pressForDuration ... thenDragToElement
, чего я не хочу.
app.pickers.elementAtIndex(0).pressForDuration(0.1, thenDragToElement: someElement)
Когда я использую функцию запись теста пользовательского интерфейса, она не записывает события прокрутки в режиме выбора. Он записывает, когда я нажимаю на элементы просмотра выбора:
app.pickerWheels["Green"].tap()
но на самом деле это не работает, когда выполняется тест (возможно, потому, что перед тем, как нажать, нужно прокрутить представление выбора).
Вот демонстрационное приложение с тестом.
https://github.com/exchangegroup/PickerViewTestDemo
Update
Теперь можно выбрать представление выбора, так как Xcode 7.0 beta 6.
app.pickerWheels["Green"].adjustToPickerWheelValue("Yellow")