Xcode test D'UI-échec du test D'UI-défaut de faire défiler vers visible (par action de AX) quand appuyer sur le champ de recherche "Annuler' bouton

j'essaie de rejeter le champ de recherche en appuyant sur le bouton "Annuler" dans la barre de recherche.

le cas d'essai ne trouve pas le bouton d'annulation. Il fonctionnait bien dans Xcode 7.0.1

j'ai ajouté predicate pour attendre bouton pour apparaître. Le cas d'essai échoue lorsque nous tapons le bouton "cancel

let button = app.buttons[“Cancel”]
let existsPredicate = NSPredicate(format: "exists == 1")

expectationForPredicate(existsPredicate, evaluatedWithObject: button, handler: nil)
waitForExpectationsWithTimeout(5, handler: nil)

button.tap() // Failing here

journaux :

    t =     7.21s     Tap SearchField
t =     7.21s         Wait for app to idle
t =     7.29s         Find the SearchField
t =     7.29s             Snapshot accessibility hierarchy for com.test.mail
t =     7.49s             Find: Descendants matching type SearchField
t =     7.49s             Find: Element at index 0
t =     7.49s             Wait for app to idle
t =     7.55s         Synthesize event
t =     7.84s         Wait for app to idle
t =     8.97s     Type 'vinayak@xmd.net' into
t =     8.97s         Wait for app to idle
t =     9.03s         Find the "Search" SearchField
t =     9.03s             Snapshot accessibility hierarchy for com.test.mail
t =     9.35s             Find: Descendants matching type SearchField
t =     9.35s             Find: Element at index 0
t =     9.36s             Wait for app to idle
t =     9.42s         Synthesize event
t =    10.37s         Wait for app to idle
t =    10.44s     Check predicate `exists == 1` against object `"Cancel" Button`
t =    10.44s         Snapshot accessibility hierarchy for com.test.mail
t =    10.58s         Find: Descendants matching type Button
t =    10.58s         Find: Elements matching predicate '"Cancel" IN identifiers'
t =    10.58s     Tap "Cancel" Button
t =    10.58s         Wait for app to idle
t =    10.64s         Find the "Cancel" Button
t =    10.64s             Snapshot accessibility hierarchy for com.test.mail
t =    10.78s             Find: Descendants matching type Button
t =    10.78s             Find: Elements matching predicate '"Cancel" IN identifiers'
t =    10.79s             Wait for app to idle
t =    11.08s         Synthesize event
t =    11.13s             Scroll element to visible
t =    11.14s             Assertion Failure: UI Testing Failure - Failed to scroll to visible (by AX action) Button 0x7f7fcaebde40: traits: 8589934593, {{353.0, 26.0}, {53.0, 30.0}}, label: 'Cancel', error: Error -25204 performing AXAction 2003
60
demandé sur Vinpai 2015-10-29 22:10:24

5 réponses

je suppose ici" Cancel "button returns false pour hittable propriété, qui l'empêche de taper.

si vous voyez tap() dans la documentation il est dit

/*!
 * Sends a tap event to a hittable point computed for the element.
 */
- (void)tap;

il semble que les choses soient brisées avec Xcode 7.1.Pour garder moi (et u aussi ;)) débloqué de ces questions, j'ai écrit une extension sur XCUIElement qui permet de taper sur l'élément même s'il n'est pas hittable. Suivant peut vous aider.

/*Sends a tap event to a hittable/unhittable element.*/
extension XCUIElement {
    func forceTapElement() {
        if self.hittable {
            self.tap()
        }
        else {
            let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
            coordinate.tap()
        }
    }
}

Maintenant vous pouvez appeler comme

button.forceTapElement()

mise à jour - pour swift 3 utiliser la phrase suivante:

extension XCUIElement {
    func forceTapElement() {
        if self.isHittable {
            self.tap()
        }
        else {
            let coordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: CGVector(dx:0.0, dy:0.0))
            coordinate.tap()
        }
    }
}
101
répondu Sandy 2017-02-07 21:26:36

pour moi, la cause fondamentale était que les objets que je voulais taper

    "151960920 ont été cachés (et retour)
  • ont été supprimés et re-joint

dans les deux cas, le bien isAccessibilityElement était false par la suite. Le remettre à true le fixe.

7
répondu dogsgod 2016-10-06 14:31:08

s'il vous Plaît vérifier le trait de l'élément, j'ai été confronté à la même question TableViewSectionHeader, j'ai essayé de robinet, mais il n'était pas à tous point

enter image description here

1
répondu Nagaraj 2018-05-10 10:22:46

dans mon cas, il était d'avoir un élément D'UI ajouté programmatically couvrant le bouton.

0
répondu PruitIgoe 2018-07-24 11:17:55

si vous utilisez le simulateur AppCenter pour effectuer les tests, vous devez vous assurer que vous effectuez les tests sur la même version de périphérique que votre simulateur local. J'ai perdu 3 jours de travail à cause de cela.

0
répondu fdelam 2018-09-06 19:09:58