Я пытаюсь создать UItest в Xcode. Когда я пытаюсь использовать UIview, я получаю ошибка:
Timestamped Event Matching Error: Failed to find matching element
Это также происходит, если я пытаюсь нажать UIView.
Я пытаюсь создать UItest в Xcode. Когда я пытаюсь использовать UIview, я получаю ошибка:
Timestamped Event Matching Error: Failed to find matching element
Это также происходит, если я пытаюсь нажать UIView.
Вы должны убедиться, что опция "Доступность" включена для объекта UIView, из которого вы работаете, например:
Обычно эта проблема наблюдается, когда родительский элемент элемента, который вы хотите записать, имеет значение isAccessibilityElement = true. В общем случае для доступа к дочернему элементу родительский элемент должен иметь значение false. Например: если у вас есть UILabel внутри представления, доступность должна быть установлена в false для представления и установлена в true для UILabel.
В Xcode 9.3, где это, по-видимому, все еще проблема, я сделал следующее:
Для записи нового теста я пока не думаю, что есть решение. Но, если вы используете расширение для принудительного нажатия с тестом, который уже существует, работает.
Пример использования:
extension XCUIElement {
func forceTapElement() {
if self.hittable {
self.tap()
}
else {
let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
coordinate.tap()
}
}
}
func testSomethingWithCells() {
let app = XCUIApplication()
let cells = app.tables.cells
sleep(1)
cells.elementBoundByIndex(0).forceTapElement()
}
Вы можете проверить исходное сообщение здесь:
Я иногда сталкивался с этой проблемой. Удалить каталог приложений из DerivedData, похоже, поможет.
Решение, которое работало для меня, заключалось в том, чтобы идентифицировать объект по-разному. В Xcode 8 я смог использовать следующее:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
С Xcode 9 я получил ошибку, упомянутую в этом вопросе. Закончилось использование следующего, которое сработало (что более похоже на исходный вариант)
XCUIApplication().cells.element(boundBy: 1).tap()