画面の一部をスキャンする
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.startSession(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)
}部分的な画面スキャンで実行可能なルールは?
全てのルールは、ユーザーが明示的に無視しない限り部分的な画面スキャンで実行されます。ただし、 ScreenTitle および InScrollView ルールは NeedsReview 部分的な画面スキャンが合格または不合格とするために必要なすべての情報を含まない場合、
