Häufig gestellte Fragen
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.
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
uploadToDashboardfunction 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.
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
- Öffnen Sie Xcode → Gehen Sie zu Xcode > Settings (oder Preferences bei älteren Versionen)
- Wählen Sie den Accounts Reiter
- Wählen Sie Ihr Apple ID
- Klicken Sie auf Manage Certificates
- Finden Sie das abgelaufene Zertifikat (es wird ein Warnsymbol haben)
- Wählen Sie das abgelaufene Zertifikat aus und klicken Sie auf die Minus-Taste (−), um es zu entfernen.
- Klicken Sie auf die Plus-Taste (+) und wählen Sie Apple Development aus, um ein neues Zertifikat zu erstellen.
- Schließen Sie die Mobile Analyzer-App
- 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:
- 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
- Abgeleitete Daten löschen:
- In Xcode: Window > Organizer > Projects Reiter
- Wählen Sie Ihr Projekt und klicken Sie auf Delete neben Derived Data
- 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:
- 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
- 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
- Starten Sie den Mobile Analyzer neu:
- Schließen Sie die Mobile Analyzer-App
- Starten Sie die App erneut. Sehen Sie nach unter Testen von iOS-Apps auf Barrierefreiheit , falls notwendig
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.
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
- Importieren Sie das Framework in jede Datei, die für Barrierefreiheitstests verwendet wird.
import axeDevToolsXCUI_noauth- Erstellen Sie ein Objekt innerhalb Ihrer Testklasse, um die Axe DevTools-Instanz zu speichern:
var axeDevTools: AxeDevTools?- Initialisieren Sie das Framework in den Methoden
setUpodersetUpWithError.
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:
- 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)- 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
postResultfunction 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.
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-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineDirekter 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:
- Provide a valid Axe DevTools Mobile API key , wenn Sie die Axe-Bibliothek 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
uploadToDashboardfunction nach jedem Scan in Ihrem Test, um Ergebnisse an den Developer Hub zu senden. - See vollständige Automatisierungsbeispiele für Axe DevTools Mobile für Appium und vergleichen Sie es mit Ihrer Implementierung.
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.
