ユーザーがaccessibilityLabelまたは識別子によってボタンが存在することを確認するにはどうすればよいですか?
func testExitsButton() {
XCTAssertTrue(app.windows.containing(.button, identifier: "Button Text").element.exists)
XCTAssertTrue(app.buttons["Button Text"].exists)
XCTAssertTrue(app.buttons["test"].exists) <- I want this, instead of accessing the text property I want by specific id, maybe the text property override the accessibilityLabel?
}
アプリケーションコードでアクセシビリティ識別子を設定し、テストでその識別子を使用してボタンを検索します。
// app code
let button: UIButton!
button.accessibilityIdentifier = "myButton"
// UI test code
func testMyButtonIsDisplayed() {
let app = XCUIApplication()
let button = app.buttons["myButton"]
XCTAssertTrue(button.exists)
}
アクセシビリティ識別子は、ボタン上のテキストとは独立して設定され、アクセシビリティラベルとは独立しています。 UI要素の識別子をアクセシビリティlabelとして配置することは、ベストプラクティスではありません。これは、VoiceOverユーザーがアクセシビリティラベルを読み取って要素を説明するためです。
重要な注意:スーパービューがアクセス可能に設定されている場合、XCUITestはそのサブビューにアクセスできない場合があります。
前述のように、ストーリーボードを介して、またはプログラムでアクセシビリティを設定することにより、要素にアクセスできます。 XCUITestが要素をどのように見るかを記録するために、カーソルが接頭辞「test」で始まる関数内にあるときに記録ボタンをクリックできます。いくつかのクリーンアップ(コマンドシフトk)と、記録ボタンが利用可能になるまで数分かかることがあります。ストーリーボードからツリーを降ろして、element(boundBy:Int)、children(matching:.textField)などのXCUITest関数を使用することもできます。XCUIApplication()。tables.cells.taining(.button、識別子:「id」)。その後は簡単な部分です。ブール値を返す.existsを使用します。
追加| 「accessibilityIdentifier」文字列テスト|アクセシビリティラベルではなく、ナビゲーションバーのユーザー定義ランタイム属性