Próbuję wygenerować UItest w Xcode. Kiedy próbuję przesunąć UIview, pojawia się błąd:
Timestamped Event Matching Error: Failed to find matching element
Dzieje się tak również, gdy spróbuję dotknąć UIView.
swift
xcode
xcode-ui-testing
shay
źródło
źródło
Odpowiedzi:
Powinieneś sprawdzić, czy opcja `` Dostępność '' jest włączona dla obiektu UIView, z którego przesuwasz, na przykład:
źródło
fastlane
do robienia zrzutów ekranu tableView. stackoverflow.com/a/39331154/4475605isAccessibilityElement = true
Zwykle ten problem występuje, gdy element nadrzędny elementu, który chcesz zarejestrować, jest ustawiony na isAccessibilityElement = true. Ogólnie rzecz biorąc, aby uzyskać dostęp do elementu podrzędnego, element nadrzędny musi mieć wartość false. Na przykład: jeśli masz UILabel wewnątrz widoku, dostępność powinna być ustawiona na false dla widoku i ustawiona na true dla UILabel.
źródło
W Xcode 9.3, gdzie najwyraźniej nadal stanowi problem, zrobiłem:
źródło
Jeśli chodzi o nagranie nowego testu, myślę, że nie ma jeszcze rozwiązania. Ale jeśli używasz rozszerzenia wymuszającego dotknięcie z testem, który już istnieje, działa.
Przykład użycia:
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() }
Możesz sprawdzić oryginalny post tutaj:
Test interfejsu użytkownika Xcode - niepowodzenie testowania interfejsu użytkownika - nie można przewinąć do widocznego (przez działanie AX) po dotknięciu przycisku „Anuluj” w polu wyszukiwania
źródło
Od czasu do czasu napotykam ten problem. Wydaje się, że pomaga usunąć katalog aplikacji z DerivedData.
źródło
Rozwiązaniem, które sprawdziło się u mnie, była inna identyfikacja obiektu.
W Xcode 8 mogłem skorzystać z:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
W przypadku Xcode 9 otrzymałem błąd wspomniany w tym pytaniu. Skończyło się na tym, co zadziałało (choć bardziej kruche niż oryginalna opcja)
XCUIApplication().cells.element(boundBy: 1).tap()
źródło