画面の一部をスキャンする

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

特定のコンポーネントや機能のアクセシビリティをテストしたい場合は、画面全体ではなく、その要素やビューに対してターゲットを絞ったスキャンを実行できます。

run(onElement: ) メソッドを使用する

単一の要素やビューは、run(onElement: ) メソッドを使ってスキャンすることができます。このメソッドは、任意の XCUIElement をパラメータとして受け取ります。XCUIApplication(アプリ全体)からボタン、ラベル、テキストフィールドなどの特定の要素、その他の UI 要素のすべてを受け入れることができます。

特定の要素を見つけるには、XCTestクエリを使用します。詳細はAppleのドキュメントでご確認ください:

スキャンを実行する前に、スキャン対象の要素が存在し、画面上に表示されていることを確認することをお勧めします。これにより、フレームワークが要素を見つけて適切な結果を返せるようになります。スキャン時に要素が画面上に見つからない場合、不完全な結果が返信される可能性があります。

以下に「メニュー」というタイトルのボタンを探し、その存在を確認してスキャンを実行するテストの例を示します。これは基本的なクエリの例ですが、子要素や子孫要素を含むより複雑なクエリも可能です。

var axe: AxeDevTools?
var app = XCUIApplication()

override func setUpWithError() throws {
    // log in to AxeDevTools
    axe = try? AxeDevTools.startScanSession(apiKey: "<DEQUE_APIKEY>",
            projectId: "<DEVHUB_PROJECT_ID>")

    // launch app and prevent tests from continuing if element is not found
    app.launch()
    continueAfterFailure = true
}

func testAccessibility() throws {
    // finds a button with the title or accessibilityIdentifier "Menu"
    // .firstMatch ensures that the test doesn't fail if multiple matching elements exist
    let buttonToTest = app.buttons["Menu"].firstMatch
    XCTAssert(buttonToTest.isHittable, "Button 'Menu' does not exist on the screen.")

    let result = try axe.run(onElement: buttonToTest)
    try axe.postResult(result)
}

部分的な画面スキャンで実行可能なルールは?

すべてのルールは、ユーザーが明示的に無視する場合を除き、部分的な画面スキャンで実行されます。しかし、ScreenTitleInScrollView のルールは、合格または不合格の判断に必要なすべての情報が部分的な画面スキャンに含まれていない場合、NeedsReview を返すことがあります。