Изменение поведения в тестировании пользовательского интерфейса Xcode для значений элементов - PullRequest
0 голосов
/ 19 октября 2019

Для приложения, над которым я работаю, ранее у меня был набор тестов пользовательского интерфейса, который работал и проходил. Я не трогал и не запускал тесты некоторое время и только недавно вычистил их, чтобы убедиться, что они все еще работают в Xcode 11 и iOS 13, однако я сталкиваюсь с некоторыми странными ошибками, с которыми я мог бы воспользоваться некоторыми советами.

У меня есть ячейка табличного представления, подобная следующей (изначально текст в поле отличается от того, что показано). Если я выполню следующий тестовый код, текстовое поле активируется, текст очищается и вводится новое значение.

enter image description here

let modelNameField = tables.cells.containing(.staticText, identifier: "Model Name").children(matching: .textField).element(boundBy: 0)

let _ = modelNameField.waitForExistence(timeout: 2)
modelNameField.tap()
modelNameField.buttons.firstMatch.tap()
modelNameField.typeText("The Other Jet")
XCTAssertEqual("The Other Jet", modelNameField.value as? String)

Однако вСимулятор iOS 12, тесты не пройдены, так как значение modelNameField равно нулю. Если я попробую точно такой же код в симуляторе iOS 13, он будет работать как положено, и значение modelNameField будет правильным. Интересно, что в iOS 12, если я переберу все app.textfields и выведу значения, они должны быть такими:

for field in app.textFields.allElementsBoundByIndex {
     print(field.value)
}

Я бы назвал это ошибкой, но я хотел проверить, есть личто-то, чего мне не хватает, или способ сделать это по-другому, который по-прежнему позволил бы мне тестировать вещи на устройствах iOS 12 в симуляторе.

...