Après avoir regardé les vidéos de 2017 WWDC Xcode et XCTest, j'ai mis à jour mes tests pour utiliser les derniers ajouts dans XCTests.Xcode 9: Comment créer des instances XCUIElement à l'aide de XCUIElementQuery?
J'ai récemment mis à jour Xcode 9 Beta, runnning OS X Sierra 10.12.4
Après cela, tous les tests où je XCUIElement() pour créer une instance d'élément, a échoué.
Exemple ligne de code: XCTAssertTrue (. XCUIElement() scrollToElement (tablesQuery.cells.staticTexts [ "vedette"]) existe.)
Ceci est l'erreur que je reçois: 'init()' n'est pas disponible: utilisez XCUIElementQuery pour créer des instances XCUIElement.
Si vous êtes curieux de savoir ce scrollToElement() est, il est une fonction personnalisée pour accéder à l'élément interrogée, si elle est pas visible dans la vue actuelle. Cela fait partie d'une extension personnalisée de XCUIElement que j'ai écrite.
Dans le cadre de la solution, pouvez-vous suggérer: Comment les instances XCUIElement devraient être créées maintenant?
Pour référence: scrollToElement()
open func scrollToElement(_ element: XCUIElement) -> XCUIElement {
while !element.visible() {
swipeUp()
}
return element
}
open func visible() -> Bool {
guard self.exists && !self.frame.isEmpty else { return false }
return XCUIApplication().windows.element(boundBy: 0).frame.contains(self.frame)
}
Toute aide est appréciée!
Pourquoi avez-vous besoin d'essayer de créer une instance de 'XCUIElement'? Je pense que vous devriez faire une méthode statique 'scrollToElement' à la place. – AdamPro13
@ AdamPro13 Bonne idée, mais Inside 'scrollToElement' j'utilise la méthode' swipeUp() 'de XCUIElement, donc il ne peut pas être rendu statique. – nChetan
Vous ne pouvez pas simplement instancier une instance de 'XCUIElement' car ils correspondent à des éléments existants dans l'interface utilisateur. Si vous créez un élément sans qu'il soit associé à l'interface utilisateur, vous ne pourrez rien faire car il ne sait rien. – AdamPro13