Bildschirmausschnitt scannen
Wenn Sie eine bestimmte Komponente oder Funktion auf Barrierefreiheit testen möchten, können Sie einen gezielten Scan für dieses Element oder diese Ansicht durchführen, anstatt den gesamten Bildschirm zu scannen.
Verwenden Sie die run(onElement: ) Methode
Ein einzelnes Element oder eine einzelne Ansicht kann mit der run(onElement: ) Methode gescannt werden. Diese Methode akzeptiert jedes XCUIElement als Parameter. Es kann alles akzeptieren, von einer XCUIApplication (der gesamten App) bis hin zu einem bestimmten Element wie einem Button, einem Label, einem Textfeld oder einem beliebigen anderen UI-Element.
Um ein bestimmtes Element zu finden, verwenden Sie XCTest Queries. Weitere Informationen finden Sie in der Dokumentation von Apple:
Wir empfehlen, vor dem Ausführen eines Scans zu überprüfen, ob das Element existiert und auf dem Bildschirm sichtbar ist, um sicherzustellen, dass das Framework das Element finden und korrekte Ergebnisse liefern kann. Falls das Element zum Zeitpunkt des Scans nicht auf dem Bildschirm gefunden wird, kann stattdessen ein unvollständiges Ergebnis ausgegeben werden.
Beispiel
Im Folgenden sehen Sie einen Beispieltest, der nach einer Schaltfläche mit dem Titel „Menü“ sucht, ihre Existenz auf dem Bildschirm überprüft und einen Scan darauf ausführt. Dies ist ein Beispiel für eine grundlegende Abfrage, wobei auch komplexere Abfragen mit untergeordneten Elementen und Nachkommen möglich sind.
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)
}Welche Regeln können bei Teilbildschirmscans ausgeführt werden?
Alle Regeln werden bei Teilbildschirmscans ausgeführt, sofern sie nicht ausdrücklich vom Benutzer ignoriert werden. Allerdings können die Regeln ScreenTitle und InScrollView NeedsReview zurückgeben, wenn der partielle Bildschirmscan nicht alle notwendigen Informationen enthält, um zu bestehen oder zu scheitern.
