Наряду с UITests
и UITableView
мне нужно изменить порядок ячеек. Является ли это возможным? Я пробовал myTable.swipeDown()
, но он вызывается в том месте ячейки, которое не отвечает на переупорядочивание. Как я могу это сделать? Это вообще возможно?
Как изменить порядок ячеек в UITests?
Ответы (3)
Если вы правильно установили свойства специальных возможностей пользовательской ячейки, то элемент управления изменением порядка должен быть доступен. Предположим, ячейка установила свои метки/идентификаторы доступности на «LondonStreet» и «BakerStreet» соответственно.
Вы можете изменить порядок ячеек, нажав и перетащив от одного элемента управления переупорядочением к другому. Идентификатор доступности для этих элементов управления устанавливается автоматически из информации о ячейке.
let app = XCUIApplication()
app.launch()
let topButton = app.buttons["Reorder LondonStreet"]
let bottomButton = app.buttons["Reorder BakerStreet"]
bottomButton.pressForDuration(0.5, thenDragToElement: topButton)
Префикс "Reorder "
был установлен операционной системой. Попробуйте использовать инспектор специальных возможностей, чтобы узнать, каковы значения вашего элемента управления переупорядочением.
Я добавил пример в свой шпаргалку по тестированию пользовательского интерфейса с некоторым рабочим примером кода если вы хотите попробовать это на своей машине.
/Applications/Xcode.app/Contents/Applications
. Этот инструмент может показать вам, какие префиксы для ваших ячеек.
- person Joe Masilotti; 10.09.2015
Более общее решение: (если вы не знаете названий)
guard let firstCell = app.cells.allElementsBoundByIndex.first, let topButton = firstCell.buttons.allElementsBoundByIndex.last else { XCTFail("no reoder btn for first cell"); return }
guard let bottomCell = app.cells.allElementsBoundByIndex.last, let bottomButton = bottomCell.buttons.allElementsBoundByIndex.last else { XCTFail("no reoder btn for last cell"); return }
topButton.press(forDuration: 0.5, thenDragTo: bottomButton)