web-dev-qa-db-fra.com

XCUITest Plusieurs correspondances trouvées erreur

J'écris des tests pour mon application et j'ai besoin de trouver le bouton "Afficher 2 offres supplémentaires". Plusieurs de ces boutons se trouvent sur ma page, mais j'aimerais simplement cliquer sur l'un d'eux. Lorsque j'essaie cela, une erreur vient de dire "Plusieurs correspondances trouvées" .__ La question est donc: comment puis-je contourner ce problème afin que mon test recherche et ne touche qu'un des boutons appelé "Afficher 2 offres supplémentaires".

Voici mon code actuel

let accordianButton = self.app.buttons["View 2 more offers"]
    if accordianButton.exists {
        accordianButton.tap()
    }
    sleep(1)
}
14
Billy Boyo

Vous devez utiliser une méthode plus élaborée pour interroger votre bouton, car plusieurs boutons correspondent.

    // We fetch all buttons matching "View 2 more offers" (accordianButtonsQuery is a XCUIElementQuery)
    let accordianButtonsQuery = self.app.buttons.matchingIdentifier("View 2 more offers")
    // If there is at least one
    if accordianButtonsQuery.count > 0 {
        // We take the first one and tap it
        let firstButton = accordianButtonsQuery.elementBoundByIndex(0)
        firstButton.tap()
    }

Swift 4:

    let accordianButtonsQuery = self.app.buttons.matching(identifier: "View 2 more offers")
    if accordianButtonsQuery.count > 0 {
        let firstButton = accordianButtonsQuery.element(boundBy: 0)
        firstButton.tap()
    }
27
Julien Quere

Xcode 9 introduit une propriété firstMatch pour résoudre ce problème:

app.staticTexts["View 2 more offers"].firstMatch.tap()
5
Xavier Lowmiller

Vous devriez utiliser matching, puis element, comme 

let predicate = NSPredicate(format: "identifier CONTAINS 'Cat'")
let image = app.images.matching(predicate).element(boundBy: 0)
0
onmyway133