Häufig gestellte Fragen

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

Android

Mobile Analyzer

Warum benötigt die App zusätzliche Berechtigungen?

Beim erstmaligen Einrichten der Anwendung werden Sie aufgefordert, Axe DevTools Mobile Analyzer die Erlaubnis für Overlay-Zeichnung und Barrierefreiheitseinstellungen zu erteilen. Die Overlay-Zeichnung ermöglicht es, dass die schwebende Aktions-Schaltfläche Ihnen folgt, unabhängig von der App, die Sie auf Ihrem Gerät geöffnet haben. Die Barrierefreiheitseinstellungen erlauben es der Analyzer-App, auf Informationen über Ansichten innerhalb der Anwendung zuzugreifen, die Sie scannen möchten.

Automatisierte Tests

Kann ich das automatisierte Testen ohne Authentifizierung einrichten?

Wir bieten Offline-Builds unserer SDKs und Appium-Treiber für Ihre Automatisierungspipeline an, die keine Netzwerk-Anfragen an den Axe DevTools Mobile-Service erfordern. Daher sind diese Build-Konfigurationen nur über Deque's Artifactory erhältlich.

Bitte beachten Sie, dass dieser Build nur einen Teil der Funktionen von axeDevTools Mobile für Android umfasst. Um den vollständigen Funktionsumfang zu nutzen, einschließlich des Übertragens von Ergebnissen an das Dashboard, verwenden Sie bitte unsere Standard-SDKs oder Appium-Treiber. Siehe dazu Erste-Schritte-Leitfaden.

Einrichtung

Beim Durchsehen der Dokumentation beachten Sie bitte, dass nicht alle Funktionen, die eine Server-Interaktion erfordern, im Offline-Build verfügbar sind.

important

Erste-Schritte-Checkliste:

  • Erforderlich: Android API 26 oder höher
  • Verbinden Sie sich mit Artifactory, um das Framework einzubinden.
Einrichtung für Tests

Fügen Sie in der Datei Anwendung des build.gradle Folgendes hinzu:

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/AL2.0' 
        exclude 'META-INF/LGPL2.1'
    }
}

Stellen Sie sicher, dass Internetberechtigung in der AndroidManifest.xml vorhanden ist:

<uses-permission android:name="android.permission.INTERNET" />
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 konvertieren.

Layout-unabhängig
@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()   
    }
}

Ergebnisse

Warum erscheinen meine Ergebnisse nicht im Developer Hub?

Wenn Ihre Ergebnisse nicht im Developer Hub erscheinen, überprüfen Sie, ob Sie Folgendes getan haben:

  • Geben Sie einen gültigen Axe DevTools Mobile API-Schlüssel an beim Initialisieren der Axe-Bibliothek in Ihren Tests. 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 an zusammen mit dem API-Schlüssel beim Start einer Testsitzung. Eine Projekt-ID ist nicht erforderlich, um eine Testsitzung zu starten, aber sie wird erforderlich, um Ergebnisse an das Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird eine Projekt-ID automatisch generiert.
  • Rufen Sie die uploadToDashboard-Funktion auf nach jedem Scan in Ihrem Test, um Ergebnisse an das Developer Hub zu senden.
  • Sehen Sie ein vollständiges Beispiel. Siehe Android Sample Test Class und vergleichen Sie es mit Ihrer Implementierung.
tip

Looking for your Project ID? You can access this from the main Projects page in Axe Developer Hub.

  • Go to 'Settings' for your project and select 'Configure Project'.
  • In the 'Project Details' you can find and copy the Project ID.
  • Make sure you have provided this Project ID to the startScanSession method.

iOS

Mobile Analyzer

Was mache ich, wenn mein Apple Development-Zertifikat abgelaufen ist?

Wenn Sie einen Fehler mit der Mobile Analyzer Desktop-App erhalten, dass Ihr Apple Development-Zertifikat abgelaufen ist, folgen Sie den unten stehenden Schritten.

Schnelle Lösung
  1. Öffnen Sie Xcode → Gehen Sie zu Xcode > Einstellungen (oder Präferenzen in älteren Versionen)
  2. Wählen Sie die Registerkarte Accounts aus
  3. Wählen Sie Ihr Apple ID
  4. Klicken Sie auf Zertifikate verwalten
  5. Finden Sie das abgelaufene Zertifikat (es wird ein Warnsymbol haben)
  6. Wählen Sie das abgelaufene Zertifikat aus und klicken Sie auf die Minus-Taste (), um es zu entfernen
  7. Klicken Sie auf die Plus-Taste (+) und wählen Sie Apple Development aus, um ein neues Zertifikat zu erstellen
  8. Schließen Sie die Mobile Analyzer-App
  9. Starten Sie die App erneut. Beziehen Sie sich bei Bedarf auf Testen von iOS-Apps auf Barrierefreiheit.
Erhalten Sie immer noch einen Fehler?

Manchmal cached Xcode das alte Zertifikat. Versuchen Sie Folgendes:

  1. Widerrufen Sie das Zertifikat in Ihrem Apple Developer-Konto:
    • Gehen Sie zu developer.apple.com
    • Navigieren Sie zu Zertifikate, Kennungen & Profile
    • Finden Sie das abgelaufene Zertifikat und widerrufen Sie es
    • Kehren Sie zu Xcode zurück und wiederholen Sie die obigen Schritte, um ein neues zu erstellen
  2. Abgeleitete Daten löschen:
    • In Xcode: Fenster > Organizer > Projekte-Registerkarte
    • Wählen Sie Ihr Projekt aus und klicken Sie auf Löschen neben Abgeleitete Daten
  3. Starten Sie Xcode nach diesen Änderungen neu

Was soll ich tun, wenn mein Gerät nicht automatisch registriert werden konnte?

Um ein Telefon manuell mit Ihrem Apple Developer-Konto zu registrieren, müssen Sie es als Testgerät über das Apple Developer-Portal hinzufügen. So funktioniert's:

  1. Erhalten Sie die UDID (Unique Device Identifier) Ihres Geräts:
    • Verbinden Sie Ihr iPhone mit Ihrem Mac
    • Öffnen Sie Finder (macOS Catalina oder höher) oder iTunes (ältere Versionen)
    • Wählen Sie Ihr Gerät aus und klicken Sie auf die Seriennummer, bis sie die UDID anzeigt
    • Rechtsklicken Sie und kopieren Sie die UDID
    • Alternativ können Sie Xcode öffnen: Fenster > Geräte und Simulatoren, wählen Sie Ihr Gerät aus und kopieren Sie die Kennung
  2. Fügen Sie das Gerät zu Ihrem Entwicklerkonto hinzu:
    • Gehen Sie developer.apple.com und melden Sie sich an
    • Navigieren Sie zu Zertifikate, Kennungen & Profile
    • Wählen Sie Geräte aus der Seitenleiste
    • Klicken Sie auf die Plus-Taste (+), um ein neues Gerät zu registrieren
    • Geben Sie einen Namen für Ihr Gerät ein und fügen Sie die UDID ein
    • Klicken Sie auf Weiter und dann auf Registrieren
  3. Starten Sie den Mobile Analyzer neu:

Beachten Sie, dass kostenlose Apple-Entwicklerkonten bis zu 3 Geräte registrieren können, während kostenpflichtige Konten bis zu 100 Geräte pro Gerätetyp registrieren können (100 iPhones, 100 iPads usw.).

Automatisierte Tests

Was ist ein Bundle-Identifier?

Eine Bundle-Identifikator ist ein eindeutiger Identifikator innerhalb des Apple-Ökosystems zur Identifikation von Anwendungen. Keine zwei Anwendungen können denselben Identifikator haben. Dies schließt auch eine Betaversion oder andere Varianten einer Anwendung ein. Axe DevTools Mobile verwendet den Bundle-Identifikator, um die Ansichten-Informationen zur Barrierefreiheit der getesteten Anwendung abzufragen.

tip

Müssen Sie eine App aus dem App Store testen? Wir können den Bundle-Identifikator für Sie abrufen. Suchen Sie aus einem Webbrowser nach dem App Store-Eintrag Ihrer Anwendung und verwenden Sie ihn, um die Bundle-ID Ihrer App zu finden.

Welche Zugriffsrechte hat die installierte Runner-Anwendung?

Nur die Anwendung, mit der Sie kommunizieren möchten, indem Sie den Bundle-Identifikator in den Einrichtungsschritten hinzufügen. Apple ist sehr gut in Sachen Sicherheit und verwendet einen Sandbox-Umgebung für jede Anwendung, die Sie auf Ihrem Gerät installiert haben, egal wie diese Anwendung installiert wurde (Testflight, Xcode oder App Store). Die Analyzer-Anwendung nutzt die UI-Test-Funktionalität, die in Xcode/Apple's Ökosystem eingebaut ist. Dies ist eine geschlossene Kommunikation, um über den festgelegten Bundle-Identifikator mit einer Anwendung zu sprechen.

Häufige Fehler und Behebung

Wenn Sie einen Fehler oder Test Fehlschlägt während des Testens erhalten, wird in diesem Abschnitt die häufigen Fehlermeldungen und deren Behebung hervorgehoben. Wählen Sie das rautenförmige rote 'x'-Symbol, und Xcode öffnet das 'Issue Navigator'-Panel auf der linken Seite, um die spezifische Fehlermeldung hervorzuheben.

  • Cannot request screenshot data because it does not exist: Das ist die Fehlermeldung, die Sie bei der ersten Ausführung wahrscheinlich erhalten. Führen Sie den Test erneut aus, um zu sehen, ob sie behoben wird. Wenn dieser Fehler ein zweites Mal auftritt, stellen Sie sicher, dass Sie den richtigen Bundle-Identifikator haben und dass die zu testende Anwendung auf dem ausgewählten Simulator/Gerät geöffnet ist.

  • caught error: “couldNotVerifyUser”: Anmeldung bei Deque fehlgeschlagen. Überprüfen Sie, ob Ihr API-Schlüssel der Setup-Datei hinzugefügt wurde und für Axe DevTools Mobile gültig ist, indem Sie Axe-Kontoeinstellungen besuchen.

Kann ich das Setup für automatisierte Tests ohne Authentifizierung durchführen?

Wir bieten Offline-Builds unserer SDKs und Appium-Treiber für Ihre Automatisierungspipeline an, die keine Netzwerk-Anfragen an den Axe DevTools Mobile-Service erfordern. Daher sind diese Build-Konfigurationen nur über Deque's Artifactory erhältlich.

Bitte beachten Sie, dass dieser Build nur einen Teil der Funktionen von axeDevToolsXCUI umfasst. Um den vollständigen Funktionsumfang zu nutzen, einschließlich des Übertragens von Ergebnissen an das Dashboard, verwenden Sie bitte unser axeDevToolsXCUI-Framework. Siehe dazu Einrichtungsanleitung.

Einrichtung
  1. Importieren Sie das Framework in jede Datei, die für Barrierefreiheitstests verwendet wird.
import axeDevToolsXCUI_noauth
  1. Erstellen Sie ein Objekt innerhalb Ihrer Testklasse, um die Axe DevTools-Instanz zu speichern:
var axeDevTools: AxeDevTools?
  1. Initialisieren Sie das Framework in den Methoden setUp oder setUpWithError.
axeDevTools = AxeDevTools.startScanSession()
Vollständiges Einrichtungbeispiel

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-Testen

Um mit dem Testen zu beginnen, übergeben Sie dem Framework beliebige XCUIElement, um Barrierefreiheitstests dagegen und seine Kinder durchzufü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.startScanSession()

    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 folgt als Nächstes

Wir geben Ihnen die Daten und Werkzeuge, um einen CI/CD-Workflow zu erstellen, der Ihrem Team hilft. Hier sind einige Vorschläge, was Sie mit diesem Ergebnissobjekt tun können:

  1. Schlagen Sie den Build fehl, wenn Fehler gefunden wurden. Wenn Sie einen Bildschirm haben, der bereits frei von Barrierefreiheitsproblemen ist, möchten Sie möglicherweise sicherstellen, dass keine neuen im Entwicklungszyklus auftreten, indem Sie sicherstellen, dass die Anzahl 0 beträgt und den Pull-Request-Status-Check fehlschlagen lassen, wenn dies nicht der Fall ist.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)
  1. Speichern Sie die Ergebnisse lokal, um einen eingeschränkten Bericht über die im Branch gefundenen Probleme zu erstellen. Sehen Sie sich die Erstellung eines Berichts mit unserem Reporter-CLI für CICD-Pipelines an. Dies kann wirklich nützlich für Release-Kandidaten oder Beta-Branches sein, um ein Bewusstsein dafür zu schaffen, welche potenziellen Hürden für Kunden, die assistive Technologie verwenden, auftreten könnten.

Ergebnisse

Warum erscheinen meine Ergebnisse nicht im Developer Hub?

Wenn Ihre Ergebnisse nicht im Developer Hub erscheinen, überprüfen Sie, ob Sie Folgendes getan haben:

  • Geben Sie einen gültigen Axe DevTools Mobile API-Schlüssel an beim Initialisieren des Axe-Frameworks in Ihren Tests. 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 an zusammen mit dem API-Schlüssel beim Start einer Testsitzung. Eine Projekt-ID ist nicht erforderlich, um eine Testsitzung zu starten, aber sie wird erforderlich, um Ergebnisse an das Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird eine Projekt-ID automatisch generiert.
  • Rufen Sie die postResult-Funktion auf nach jedem Scan in Ihrem Test, um Ergebnisse an das Developer Hub zu senden.
  • Sehen Sie ein vollständiges Beispiel. Siehe iOS Beispiel-Testklasse und vergleichen Sie es mit Ihrer Implementierung.
tip

Suchen Sie Ihre Projekt-ID? Sie können diese auf der Hauptprojektseite im Axe Developer Hubfinden.

  • Gehen Sie zu „Einstellungen“ für Ihr Projekt 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 startScanSession -Methode übergeben haben.

Appium

Automatisierte Tests

Kann ich das Setup für automatisierte Tests ohne Authentifizierung durchführen?

Sie können mit unseren Appium-Offlinetreibern einen Scan 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 Netzwerk-Anfragen an den Axe DevTools Mobile-Service zu stellen.

Installation

Sie können die Appium-Offlinetreiber mit einem privaten npm-Paket von Deque's Artifactory installieren:

Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offline
iOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offline

Alternativ können Sie es direkt von Agora herunterladen und lokal installieren. Weitere Details finden Sie in unserer Dokumentation unter Setup für Private Cloud und On-Premises.

Lizenzschlüssel

Sie benötigen einen Lizenzschlüssel von Deque, um diese Offline-Version des Appium-Treibers zu verwenden. Bitte senden Sie eine Anfrage helpdesk@deque.com oder support.deque.com.

Der Lizenzschlüssel wird im String-Format sein und ungefähr so aussehen: eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==

Es wird dringend empfohlen, diesen Lizenzschlüssel aus Sicherheitsgründen zu Ihren Umgebungsvariablen hinzuzufügen.

Offline-Scan

Um einen Scan durchzuführen, stellen Sie sicher, dass Ihr Lizenzschlüssel in axeSettings enthalten ist.

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)

Die folgenden sind 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);
    });
});

Ergebnisse

Warum erscheinen meine Ergebnisse nicht im Developer Hub?

Wenn Ihre Ergebnisse nicht im Developer Hub erscheinen, überprüfen Sie, ob Sie Folgendes getan haben:

tip

Suchen Sie Ihre Projekt-ID? Sie können diese von der Hauptprojektseite in Axe Developer Hub aus abrufen.

  • Gehen Sie zu „Einstellungen“ für Ihr Projekt 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 axeStartSession -Methode übergeben haben.