Я намагаюся створити 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, з якого ви переходите, наприклад:
fastlane
щоб використовувати знімки екрана tableView. stackoverflow.com/a/39331154/4475605
isAccessibilityElement = true
Зазвичай ця проблема спостерігається, коли батьківський елемент елемента, який ви хочете записати, встановлений на isAccessibilityElement = true. Як правило, для доступу до дочірнього елемента для батьківського елемента потрібно встановити значення false. Наприклад: якщо у вас є UILabel всередині представлення, доступність має бути встановлена на вигляд false, а для UILabel встановлено значення true.
У 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()
}
Ви можете перевірити оригінальну публікацію тут:
Рішення, яке працювало для мене, полягало в тому, щоб ідентифікувати об'єкт по-різному.
У Xcode 8 я зміг використати наступне:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
З Xcode 9 я отримав помилку, згадану в цьому запитанні. Закінчилося за допомогою наступного, який спрацював (хоч і більше лускатого, ніж оригінальний варіант)
XCUIApplication().cells.element(boundBy: 1).tap()