次のコードを使用しているときにUIテストで複数のボタンが見つかったとの問題があります。Xcode UIが複数のボタンをテストする
app.buttons["Upgrade"].tap()
だから、私はユニットテストをreran、右のその行を実行する前にブレークポイントを設定し、録音ボタンを押すと、ボタンをクリックし、それが次のコードを生成しました。
app.children(matching: .window).element(boundBy: 0).children(matching: .other).element(boundBy: 1).buttons["Upgrade"].tap()
もちろん、テストの先頭にはlet app = XCUIApplication()
があります。
なぜこれが起こっているのでしょうか?
時々p UIApplication.shared.windows
をデバッガで実行すると、配列に2つの値があります。なぜ私は複数のウィンドウを持っていないか分かりません。私がウィンドウで持っている唯一のやりとりは、UIApplication.shared.keyWindow?.rootViewController
を別のビューコントローラに設定することです。didFinishLaunchingWithOptions
に次のコードがあります。 if文の中とelse文の中にある
// 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()
は私ではなく、それはSecondView
のだFirstView
のを除いてほとんど同じコードを持っています。
'app.buttons [" Upgrade "]。debugDescription'は、ヒントを提供するかもしれません。 –
私はこの問題が発生する前に思っています。テストしているボタンに一意のアクセシビリティ識別子を投げて、テストを再録音してみてください。 – Adrian
@PauloMattos私はブレークポイントを設定し、それを印刷しようとしましたが、多くのものを印刷しました。私はすぐにそれを見て、何も役に立たない、あるいは私が知らなかったことを見つけることができません。 –