Häufig gestellte Fragen
Android
Warum benötigt die App zusätzliche Berechtigungen?
Wenn Sie die Anwendung zum ersten Mal einrichten, werden Sie aufgefordert, axe DevTools Mobile Analyzer die Berechtigung zum Zeichnen über anderen Apps und Zugriff auf die Barrierefreiheitseinstellungen zu erteilen. Durch die Draw-Overlay-Funktion folgt Ihnen der Floating Action Button, unabhängig davon, welche App Sie auf Ihrem Gerät geöffnet haben. Über die Eingabehilfeneinstellungen kann die Analyse-App auf Anzeigeinformationen innerhalb der Anwendung zugreifen, die Sie scannen möchten.
Kann ich automatisierte Tests ohne Authentifizierung einrichten?
Wir bieten Offline-Versionen unserer SDKs und Appium-Treiber für Ihre Automatisierungspipeline an, die keine Netzwerk-Anfragen an den Dienst axe DevTools Mobile erfordern. Daher sind diese Build-Konfigurationen nur über Deque Artifactory verfügbar.
Bitte beachten Sie, dass dieser Build eine Teilmenge der Funktionen von axeDevTools Mobile für Android ist. Um alle Funktionen nutzen zu können, einschließlich des Hochladens von Ergebnissen zum Dashboard, verwenden Sie bitte unsere Standard-SDKs oder Appium-Treiber. Siehe Anleitung zum Einstieg.
Einrichtung
Bitte beachten Sie beim Durchblättern der Dokumentation, dass in der Offline-Version nicht alle Funktionen verfügbar sind, die eine Serverinteraktion erfordern.
Checkliste für die ersten Schritte:
- Erfordert: Android API 26 oder höher
- Stellen Sie eine Verbindung zu Artifactory her, um das Framework einzubinden.
Einrichtung zum Testen
Fügen Sie in der Anwendungsdatei build.gradle Folgendes hinzu:
androidTestImplementation 'com.deque.android.no-auth:axe-devtools-android:8.1.0'und
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Espresso-Testbeispiel
Beachten Sie, dass axe.loginWithUsername(...) und axe.loginWithApiKey(...) in dieser Version der Bibliothek nicht verfügbar sind und aus dem Setup-Code entfernt werden sollten, wenn Sie von der authentifizierten Version wechseln.
Layout-Agnostisch
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Rule
@JvmField
var rule: ActivityScenarioRule<MainActivity> = ActivityScenarioRule(MainActivity::class.java)
companion object {
private val axe = AxeDevTools()
init {
axe.setOfflineLicenseKey("deque_provided_license_key_here")
}
axe.setInstrumenation(InstrumentationRegistry.getInstrumentation())
}
@Test
fun exampleTest() {
onView(withText("Example Button Name")).perform(click())
}
@After
fun runAccessibilityScan() {
val scan = axe.scan()
val result = scan?.getSerializedResult()
axe.tearDown()
}
}Warum werden Ihre Ergebnisse nicht im Developer Hub angezeigt?
Falls Ihre Ergebnisse im Developer Hub nicht angezeigt werden, überprüfen Sie bitte, ob Sie Folgendes durchgeführt haben:
- Geben Sie einen gültigen axe DevTools Mobile API-Schlüssel beim Initialisieren der Axe-Bibliothek in Ihren Tests an. Besuchen Sie Axe-Kontoeinstellungen, um Ihre API-Schlüssel zu finden oder einen neuen axe DevTools Mobile API-Schlüssel generieren.
- Geben Sie eine gültige Projekt-ID zusammen mit dem API-Schlüssel beim Start einer Testsitzung an. Eine Project-ID ist zum Starten einer Testsitzung nicht erforderlich, aber sie ist erforderlich, um Ergebnisse an Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird eine Projekt-ID automatisch generiert.
- Rufen Sie die
uploadToDashboard-Funktion nach jedem Scan in Ihrem Test auf, um die Ergebnisse an den Developer Hub zu senden. - Sehen Sie sich ein vollständiges Beispiel an. Sehen Sie sich die Android-Beispieltestklasse an und vergleichen Sie sie mit Ihrer Implementierung.
Suchen Sie Ihre Projekt-ID? Sie können darauf über die Hauptseite „Projekte“ im axe Developer Hub zugreifen.
- Gehen Sie in Ihrem Projekt zu „Einstellungen“ und wählen Sie „Projekt konfigurieren“.
- In den „Projektdetails“ können Sie die Projekt-ID finden und kopieren.
- Stellen Sie sicher, dass Sie diese Projekt-ID an die
startSession-Methode übergeben haben.
iOS
Was ist ein Bundle-Identifier?
Ein Bundle-Identifier ist eine eindeutige Kennung innerhalb des Apple-Ökosystems zur Anwendungsidentifizierung. Keine zwei Anwendungen können dieselbe Kennung haben. Hierzu gehören eine Betaversion oder andere Varianten einer Anwendung. axe DevTools Mobile verwendet die Bundle-ID, um eine Verbindung herzustellen und die Zugänglichkeitsinformationen der Ansichten der getesteten Anwendung abzufragen.
Müssen Sie eine App aus dem App Store testen? Wir können die Bundle-ID für Sie ermitteln. Suchen Sie in einem Webbrowser nach dem App Store-Eintrag Ihrer Anwendung, um die Bundle-ID Ihrer App zu finden und verwenden Sie ihn.
Worauf hat die installierte Runner-Anwendung Zugriff?
Nur die Anwendung, die Sie durch Hinzufügen der Bundle-ID in den Einrichtungsschritten zur Kommunikation angegeben haben, kann kommunizieren. Apple legt großen Wert auf Sicherheit und verwendet für jede Anwendung, die Sie auf Ihrem Gerät installiert haben, eine Sandbox-Umgebung , unabhängig davon, wie die Anwendung installiert wurde (Testflight, Xcode oder App Store). Die Analyseanwendung nutzt die im Xcode/Apple-Ökosystem integrierte UI-Testfunktion. Dies ist eine geschlossene Kommunikationsbox, um mit einer Anwendung über die Bundle-ID zu kommunizieren, die Sie in der Setup-Datei angegeben haben.
Häufige Fehler und deren Behebung
Wenn beim Testen eine Fehlermeldung/ein Testfehler auftritt, werden in diesem Abschnitt die häufigsten Fehlermeldungen und deren Lösung hervorgehoben. Wählen Sie das rautenförmige rote „x“-Symbol aus. Xcode öffnet dann links das Fenster „Issue Navigator“, um die jeweilige Fehlermeldung hervorzuheben.
-
Cannot request screenshot data because it does not exist: Dies ist die Fehlermeldung, die Sie wahrscheinlich beim ersten Durchlauf erhalten. Führen Sie den Test erneut aus, um zu sehen, ob das Problem behoben ist. Wenn dieser Fehler ein zweites Mal auftritt, stellen Sie sicher, dass Sie die richtige Bundle-ID haben und dass die zu testende Anwendung auf dem ausgewählten Simulator/Gerät geöffnet ist. -
caught error: "couldNotVerifyUser": Anmeldung mit Deque fehlgeschlagen. Überprüfen Sie, ob Ihr API-Schlüssel zur Setup-Datei hinzugefügt wurde und für axe DevTools Mobile gültig ist, indem Sie axe-Kontoeinstellungen aufrufen.
Kann ich automatisierte Tests ohne Authentifizierung einrichten?
Wir bieten Offline-Versionen unserer SDKs und Appium-Treiber für Ihre Automatisierungspipeline an, die keine Netzwerk-Anfragen an den Dienst axe DevTools Mobile erfordern. Daher sind diese Build-Konfigurationen nur über Deque Artifactory verfügbar.
Bitte beachten Sie, dass diese Version eine Teilmenge der Funktionen von axeDevToolsXCUI ist. Um den vollständigen Funktionsumfang zu nutzen, einschließlich der Übertragung der Ergebnisse an das Dashboard, verwenden Sie bitte unser axeDevToolsXCUI-Framework. Weitere Informationen finden Sie in der Setup-Anleitung.
Einrichtung
- Importieren Sie das Framework in jede Datei, die für Barrierefreiheitstests verwendet wird.
import axeDevToolsXCUI_noauth- Erstellen Sie in Ihrer Testklasse ein Objekt, um die axe DevTools Instanz zu speichern:
var axeDevTools: AxeDevTools?- Initialisieren Sie das Framework innerhalb der Methoden
setUpodersetUpWithError.
axeDevTools = AxeDevTools.startSession()Vollständiges Einrichtungsbeispiel
import axeDevToolsXCUI_noauth
import XCTest
class MyUITests: XCTestCase {
var axeDevTools: AxeDevTools?
override func setUpWithError() throws {
axeDevTools = AxeDevTools.loginWithLicenseKey("deque_provided_license_key_here") // does this change??
}
...
}UI-Tests
Um mit dem Testen zu beginnen, übergeben Sie jedes XCUIElement an das Framework, um Erreichbarkeitstests für das Framework und seine untergeordneten Elemente auszuführen.
let result = try axeDevTools.run(onElement: XCUIApplication())Vollständiges Beispiel
import XCTest
import axeDevToolsXCUI_noauth
final class XCUI_noAuthUITest: XCTestCase {
var axeDevTools: AxeDevTools = AxeDevTools.startSession()
override func setUpWithError() throws {
continueAfterFailure = false
}
func testExample() throws {
let app = XCUIApplication()
app.launch()
let result = try axeDevTools.run(onElement: app)
// Do something with the result
}
}Was kommt als Nächstes?
Wir geben Ihnen die Daten und Tools, um einen CI/CD-Workflow zu erstellen, der Ihrem Team hilft. Hier sind einige Vorschläge, was Sie mit diesem Ergebnisobjekt tun können:
- Lassen Sie den Build fehlschlagen, wenn Fehler gefunden wurden. Wenn bei einem Bildschirm bereits keine Zugänglichkeitsprobleme mehr vorliegen, möchten Sie möglicherweise sicherstellen, dass im Verlauf des Entwicklungslebenszyklus keine neuen Probleme auftreten. Dazu geben Sie an, dass der Zähler 0 beträgt, und lassen die Statusprüfung der Pull-Anfrage scheitern, wenn dies nicht der Fall ist.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- Speichern Sie die Ergebnisse lokal , um einen Bericht mit begrenztem Umfang über die im Zweig gefundenen Probleme zu erstellen. Überprüfen Sie das Erstellen eines Berichts mit unserem Reporter CLI für CICD-Pipelines. Dies kann für Release-Candidate- oder Beta-Branches sehr hilfreich sein, um ein Bewusstsein dafür zu schaffen, mit welchen potenziellen Hindernissen Kunden bei der Verwendung unterstützender Technologien konfrontiert werden können.
Warum werden Ihre Ergebnisse nicht im Developer Hub angezeigt?
Falls Ihre Ergebnisse im Developer Hub nicht angezeigt werden, überprüfen Sie bitte, ob Sie Folgendes durchgeführt haben:
- Geben Sie einen gültigen axe DevTools Mobile API-Schlüssel beim Initialisieren des Axe-Frameworks in Ihren Tests an. Besuchen Sie Axe-Kontoeinstellungen, um Ihre API-Schlüssel zu finden oder einen neuen axe DevTools Mobile API-Schlüssel generieren.
- Geben Sie eine gültige Projekt-ID zusammen mit dem API-Schlüssel beim Start einer Testsitzung an. Eine Project-ID ist zum Starten einer Testsitzung nicht erforderlich, aber sie ist erforderlich, um Ergebnisse an Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird eine Projekt-ID automatisch generiert.
- Rufen Sie die
postResult-Funktion nach jedem Scan in Ihrem Test auf, um die Ergebnisse an Developer Hub zu senden. - Sehen Sie sich ein vollständiges Beispiel an. Schauen Sie sich die iOS Beispieltestklasse an und vergleichen Sie sie mit Ihrer Implementierung.
Suchen Sie Ihre Projekt-ID? Sie können darauf über die Hauptseite „Projekte“ im axe Developer Hub zugreifen.
- Gehen Sie in Ihrem Projekt zu „Einstellungen“ und wählen Sie „Projekt konfigurieren“.
- In den „Projektdetails“ können Sie die Projekt-ID finden und kopieren.
- Stellen Sie sicher, dass Sie diese Projekt-ID an die
startSession-Methode übergeben haben.
Appium
Kann ich automatisierte Tests ohne Authentifizierung einrichten?
Sie können einen Scan mit unseren Appium-Offline-Treibern durchführen, indem Sie einen von Deque bereitgestellten Lizenzschlüssel verwenden. Dies kann nützlich sein, wenn Sie mit Cloud-Anbietern arbeiten oder Scans durchführen müssen, ohne Netzwerkanfragen an den Dienst axe DevTools Mobile zu senden.
Installation
Sie können die Appium-Offline-Treiber über ein privates npm-Paket aus Deque Artifactory installieren:
Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineAlternativ können Sie es direkt von Agora herunterladen und lokal installieren. Weitere Informationen finden Sie in unserer Dokumentation zum Thema Einrichtung für Private Cloud und On Prem.
Lizenzschlüssel
Um diese Offline-Version des Appium-Treibers zu verwenden, benötigen Sie einen Lizenzschlüssel von Deque. Bitte senden Sie eine Anfrage an helpdesk@deque.com oder support.deque.com.
Der Lizenzschlüssel wird als Zeichenkette bereitgestellt und sieht etwa so aus:
eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==
Es wird dringend empfohlen, diesen Lizenzschlüssel aus Sicherheitsgründen zu Ihren Umgebungsvariablen hinzuzufügen.
Offline-Scan
Stellen Sie sicher, dass Ihr Lizenzschlüssel in axeSettings enthalten ist, um einen Scan auszuführen.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);In axeSettings stehen die folgenden optionalen Eigenschaften zur Verfügung:
ignoreRules(Standard:[])ignoreExperimental(Standard:false)
Nachfolgend finden Sie vollständige Beispiele für Offline-Scans mit unseren Appium-Treibern unter Verwendung des Mocha-Testframeworks in JavaScript.
Android
const { remote } = require('webdriverio');
const assert = require('assert');
describe('AxeScan', () => {
let driver;
let axeSettings;
before(async () => {
axeSettings = {
// Your license key has been stored in an environment variable for security
licenseKey: process.env.AXE_LICENSE_KEY
};
driver = await remote({
hostname: 'localhost',
port: 4723,
capabilities: {
platformName: 'Android',
'appium:automationName': 'AxeUiAutomator2',
'appium:deviceName': 'Android',
'appium:appPackage': 'com.android.settings',
'appium:appActivity': '.Settings',
},
logLevel: 'silent'
});
});
after(async () => {
await driver.deleteSession();
});
it('scan settings screen', async () => {
// run accessibility scan
const result = await driver.execute('mobile: axeScan', axeSettings);
// ensure no errors were encountered during the scan
if (result.axeError) {
assert.fail(`AxeScan failed with error: ${result.axeError}`);
}
const failCount = result.axeRuleResults.filter(rule => rule.status === 'FAIL').length;
// assert that there are no accessibility violations
assert.strictEqual(failCount, 0);
});
});iOS
const { remote } = require('webdriverio');
const assert = require('assert');
describe('AxeScan', () => {
let driver;
let axeSettings;
before(async () => {
axeSettings = {
// Your license key has been stored in an environment variable for security
licenseKey: process.env.AXE_LICENSE_KEY
};
driver = await remote({
hostname: 'localhost',
port: 4723,
capabilities: {
platformName: 'iOS',
'appium:automationName': 'AxeXCUITest',
'appium:bundleId': 'com.apple.Maps',
'appium:udid': '...', // xcrun simctl list | grep Booted
},
logLevel: 'silent'
});
});
after(async () => {
await driver.deleteSession();
});
it('scan settings screen', async () => {
// run accessibility scan
const result = await driver.execute('mobile: axeScan', axeSettings);
// ensure no errors were encountered during the scan
if (result.axeError) {
assert.fail(`AxeScan failed with error: ${result.axeError}`);
}
const failCount = result.axeRuleResults.filter(rule => rule.status === 'FAIL').length;
// assert that there are no accessibility violations
assert.strictEqual(failCount, 0);
});
});Warum werden Ihre Ergebnisse nicht im Developer Hub angezeigt?
Falls Ihre Ergebnisse im Developer Hub nicht angezeigt werden, überprüfen Sie bitte, ob Sie Folgendes durchgeführt haben:
- Stellen Sie sicher, dass Sie einen gültigen Axe DevTools Mobile API-Schlüssel beim Starten einer Testsitzung und beim Initiieren eines Scans angegeben haben. Besuchen Sie Axe-Kontoeinstellungen, um Ihre API-Schlüssel zu finden oder einen neuen axe DevTools Mobile API-Schlüssel generieren.
Stellen Sie sicher, dass Sie beim Starten einer Testsitzung eine gültige Projekt-ID zusammen mit dem API-Schlüssel angegeben haben. Eine Project-ID ist zum Starten einer Testsitzung nicht erforderlich, aber sie ist erforderlich, um Ergebnisse an Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird automatisch eine Projekt-ID generiert.
- Sehen Sie sich vollständige Automatisierungsbeispiele von axe DevTools Mobile für Appium an und vergleichen Sie diese mit Ihrer Implementierung.
Suchen Sie Ihre Projekt-ID? Sie können darauf über die Hauptseite „Projekte“ im axe Developer Hub zugreifen.
- Gehen Sie in Ihrem Projekt zu „Einstellungen“ und wählen Sie „Projekt konfigurieren“.
- In den „Projektdetails“ können Sie die Projekt-ID finden und kopieren.
- Stellen Sie sicher, dass Sie diese Projekt-ID der
axeStartSession-Methode übergeben haben.
