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 Netzwerkverbindungen zum Axe DevTools Mobile Service erfordern. Diese Build-Konfigurationen sind daher nur verfügbar über Deque's Artifactoryfinden.

Bitte beachten Sie, dass dieser Build ein Teilset von Funktionen innerhalb von Axe DevTools Mobile für Android ist. Um den vollständigen Funktionsumfang zu nutzen, einschließlich dem Versenden von Ergebnissen an das Dashboard, verwenden Sie bitte unsere Standard-SDKs oder Appium-Treiber. Verweisen Sie auf den Erste-Schritte-Leitfadenfinden.

Setup

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

important

Einstiegs-Checkliste:

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

In der applicationDatei build.gradle , fügen Sie hinzu:

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

Stellen Sie sicher, dass in der AndroidManifest.xmlInternetberechtigungen vorhanden sind:

<uses-permission android:name="android.permission.INTERNET" />
Espresso-Testbeispiel

Beachten Sie, dass die axe.loginWithUsername(...) und die 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-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:

  • Provide a valid Axe DevTools Mobile API key bei der Initialisierung 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 generierenfinden.
  • Provide a valid Project ID zusammen mit dem API-Schlüssel, wenn Sie eine Testsitzung starten. Eine Projekt-ID wird nicht benötigt, um eine Testsitzung zu starten, aber sie ist is erforderlich, um Ergebnisse an Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird automatisch eine Projekt-ID generiert.
  • Call the uploadToDashboard function nach jedem Scan in Ihrem Test, um Ergebnisse an Developer Hub zu senden.
  • See a full example. Verweisen Sie auf den Android Sample Test Class und vergleichen Sie ihn 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.

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 > Settings (oder Preferences bei älteren Versionen)
  2. Wählen Sie den Accounts Reiter
  3. Wählen Sie Ihr Apple ID
  4. Klicken Sie auf Manage Certificates
  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. Verweisen Sie auf Testen von iOS-Apps auf Barrierefreiheit bei Bedarf.
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 Certificates, Identifiers & Profiles
    • 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: Window > Organizer > Projects Reiter
    • Wählen Sie Ihr Projekt und klicken Sie auf Delete neben Derived Data
  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 neuer) 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 öffnen Xcode: Window > Devices and Simulators, 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 zu developer.apple.com und melden Sie sich an
    • Navigieren Sie zu Certificates, Identifiers & Profiles
    • Wählen Sie Devices in der Seitenleiste aus
    • Klicken Sie auf das Pluszeichen (+) 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 Continue und dann auf Register
  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, die Sie spezifiziert haben, um zu kommunizieren, indem Sie die Bundle-Kennung in den Einrichtungsabschnitten hinzufügen. Apple ist wirklich gut in Sachen Sicherheit und verwendet eine Sandbox-Umgebung für jede Anwendung, die Sie auf Ihrem Gerät installiert haben, unabhängig davon, wie diese Anwendung installiert wurde (Testflight, Xcode oder App Store). Die Analyseanwendung nutzt die in Xcode/Apples Ökosystem integrierte UI-Testfunktionalität. Dies ist eine geschlossene Kommunikation, um über die im Einrichtungsfile angegebene Bundle-Kennung 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: Dies ist die Fehlermeldung, die Sie wahrscheinlich beim ersten Durchlauf erhalten. Führen Sie den Test erneut aus, um zu prüfen, ob er behoben wurde. Wenn dieser Fehler ein zweites Mal auftritt, stellen Sie sicher, dass die korrekte Bundle-Kennung vorhanden ist und 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 in die Setup-Datei aufgenommen wurde und für Axe DevTools Mobile gültig ist, indem Sie Axe-Kontoeinstellungenfinden.

Kann ich das automatisierte Testen ohne Authentifizierung einrichten?

Wir bieten Offline-Builds unserer SDKs und Appium-Treiber für Ihre Automatisierungspipeline an, die keine Netzwerkanfragen an den Axe DevTools Mobile-Dienst erfordern. Diese Build-Konfigurationen sind daher nur über Deque's Artifactoryfinden.

Bitte beachten Sie, dass dieser Build ein Teil der Funktionalitäten innerhalb von axeDevToolsXCUI ist. Um die vollständigen Funktionen, einschließlich des Übertragens von Ergebnissen an das Dashboard, zu nutzen, verwenden Sie bitte unser axeDevToolsXCUI-Framework. Weitere Informationen finden Sie im Einrichtungsanleitungfinden.

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 kommt 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:

  • Provide a valid Axe DevTools Mobile API key , wenn Sie das Axe-Framework in Ihren Tests initialisieren. Besuchen Sie Axe-Kontoeinstellungen , um Ihre API-Schlüssel zu finden oder einen neuen Axe DevTools Mobile API-Schlüssel generierenfinden.
  • Provide a valid Project ID zusammen mit dem API-Schlüssel beim Starten einer Testsitzung. Eine Projekt-ID ist nicht erforderlich, um eine Testsitzung zu starten, aber sie is erforderlich, um Ergebnisse an den Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird automatisch eine Projekt-ID generiert.
  • Call the postResult function nach jedem Scan in Ihrem Test, um Ergebnisse an den Developer Hub zu senden.
  • See a full example. Weitere Informationen finden Sie im iOS Beispiel-Testklasse und vergleichen Sie ihn 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-Offline-Treiber mit einem privaten npm-Paket von Deque's Artifactory:

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
Direkter Download

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

Lizenzschlüssel

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

Der Lizenzschlüssel wird im String-Format sein und sieht ungefähr so aus:

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 enthalten ist in axeSettingsfinden.

const axeSettings = { 
  'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};

const result = await driver.execute('mobile: axeScan', axeSettings);

In axeSettingsstehen 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 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 axeStartSession -Methode übergeben haben.