Ich habe ein Problem, bei dem mein UI-Test mehrere Schaltflächen anzeigt, wenn der folgende Code verwendet wird.Xcode UI-Tests Mehrere gefundene Schaltflächen
app.buttons["Upgrade"].tap()
So reran ich mein Gerät zu testen und einen Haltepunkt rechts setzen, bevor diese Zeile und drücken Sie die Aufnahmetaste und klickte auf den Button und es erzeugt den folgenden Code ausgeführt wird.
app.children(matching: .window).element(boundBy: 0).children(matching: .other).element(boundBy: 1).buttons["Upgrade"].tap()
Natürlich an der Spitze des Tests habe ich let app = XCUIApplication()
.
Irgendeine Idee, warum das passieren würde?
Manchmal beim Ausführen p UIApplication.shared.windows
im Debugger hat es 2 Werte im Array. Ich bin mir nicht sicher warum, da ich nie mehrere Fenster habe. Die einzige Interaktionen, die ich mit Windows habe, ist die Einstellung UIApplication.shared.keyWindow?.rootViewController
auf verschiedene View-Controller manchmal, und der folgende Code in didFinishLaunchingWithOptions
.
// Get view controllers ready
self.window = UIWindow(frame: UIScreen.main.bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let mainViewController: ViewController = mainStoryboard.instantiateViewController(withIdentifier: "FirstView") as! ViewController
// Show view controller
self.window?.rootViewController = mainViewController
self.window?.makeKeyAndVisible()
, die innerhalb einer if-Anweisung ist und in der anderen Aussage habe ich so ziemlich den gleichen Code außer statt FirstView
es ist SecondView
.
Drucken 'app.buttons [" Upgrade "]. DebugDescription' könnte einen Hinweis geben ... –
Ich denke, dass ich dieses Problem schon einmal begegnet bin. Sie könnten versuchen, eine eindeutige Zugänglichkeits-ID auf die Schaltfläche zu werfen, die Sie testen, und den Test erneut aufzeichnen. – Adrian
@PauloMattos Ich habe einen Haltepunkt gesetzt und versucht, das zu drucken, aber es hat eine Menge Zeug gedruckt. Ich habe es mir schnell angeschaut und kann nichts Nützliches finden oder das wusste ich noch nicht. –