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.
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.
Odpowiedzi:
fastlane
do robienia zrzutów ekranu tableView. stackoverflow.com/a/39331154/4475605
isAccessibilityElement = 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.
W Xcode 9.3, gdzie najwyraźniej nadal stanowi problem, zrobiłem:
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:
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()