Häufig gestellte Fragen
Android
Mobile Analyzer
Warum benötigt die App zusätzliche Berechtigungen?
Beim erstmaligen Einrichten der Anwendung werden Sie aufgefordert, dem axe DevTools Mobile Analyzer die Erlaubnis zum Zeichnen von Overlays und für die Barrierefreiheitseinstellungen zu erteilen. Die Overlay-Funktion ermöglicht es dem schwebenden Aktionsbutton, Ihnen unabhängig von der geöffneten App auf Ihrem Gerät zu folgen. Die Barrierefreiheitseinstellungen ermöglichen der Analyzer-App den Zugriff auf Ansichtsinfos innerhalb der Anwendung, die Sie scannen möchten.
Automatisiertes Testen
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. Diese Build-Konfigurationen sind somit nur über Deque's Artifactoryverfügbar.
Bitte beachten Sie, dass dieses Build nur einen Teil der Funktionen von axeDevTools Mobile für Android umfasst. Um alle Funktionen nutzen zu können, einschließlich der Weiterleitung von Ergebnissen zum Dashboard, verwenden Sie bitte unsere Standard SDKs oder Appium-Treiber. Siehe den Erste-Schritte-Leitfaden.
Setup
Beim Durchsehen der Dokumentation beachten Sie bitte, dass nicht alle Funktionen, die eine Server-Interaktion erfordern, im Offline-Build verfügbar sind.
Erste-Schritte-Checkliste:
- Erforderlich: Android API 26 oder höher
- Verbinden Sie sich mit Artifactory , um das Framework einzubinden.
Einrichtung für Tests
In der Anwendungs- build.gradle Datei hinzufügen:
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Achten Sie darauf, dass im AndroidManifest.xml die Internetberechtigung vorhanden ist: AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />Espresso-Testbeispiel
Beachten Sie, dass die 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-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 Sie Ihre Ergebnisse nicht im Developer Hub sehen, vergewissern Sie sich, dass Sie Folgendes getan haben:
- Stellen Sie einen gültigen Axe DevTools Mobile API-Schlüssel bereit , wenn Sie die Axe-Bibliothek in Ihren Tests initialisieren. Besuchen Sie die Axe-Kontoeinstellungen , um Ihre API-Schlüssel zu finden oder einen neuen Axe DevTools Mobile API-Schlüssel generieren.
- Stellen Sie eine gültige Projekt-ID bereit zusammen mit dem API-Schlüssel, wenn Sie eine Testsitzung starten. Eine Projekt-ID ist nicht erforderlich, um eine Testsitzung zu starten, aber sie ist erforderlich, um Ergebnisse an den Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird eine Projekt-ID automatisch generiert.
- Rufen Sie die
uploadToDashboardFunktion nach jedem Scan in Ihrem Test, um die Ergebnisse an das Developer Hub zu senden. - Siehe ein vollständiges Beispiel. Beziehen Sie sich auf die Android Sample Test Class und vergleichen Sie diese mit Ihrer Implementierung.
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
startScanSessionmethod.
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 > Einstellungen (oder Präferenzen in älteren Versionen)
- Wählen Sie die Accounts -Registerkarte aus
- Wählen Sie Ihre Apple ID
- Klicken Sie auf Zertifikate verwalten
- 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 , um ein neues Zertifikat zu erstellen
- Schließen Sie die Mobile Analyzer-App
- Starten Sie die App erneut. Beziehen Sie sich auf Testen von iOS-Apps auf Barrierefreiheit , falls nötig.
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 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
- Abgeleitete Daten löschen:
- In Xcode: Fenster > Organizer > Projekte Tab
- Wählen Sie Ihr Projekt aus und klicken Sie auf Löschen neben Abgeleitete Daten
- 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 Xcodeöffnen: Fenster > Geräte und Simulatoren, 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 Zertifikate, Kennungen & Profile
- Wählen Sie Geräte in der Seitenleiste
- Klicken Sie auf das Plus (+) Symbol, 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 Registrieren
- Starten Sie den Mobile Analyzer neu:
- Schließen Sie die Mobile Analyzer-App
- Starten Sie die App erneut. Siehe Testen von iOS-Apps auf Barrierefreiheit , falls nötig.
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?
Ein Bundle-Identifier ist ein eindeutiger Identifikator im Apple-Ökosystem zur Identifikation von Anwendungen. Keine zwei Anwendungen können denselben Identifikator haben. Dies schließt eine Betaversion oder andere Variationen einer Anwendung ein. axe DevTools Mobile verwendet den Bundle-Identifier, um auf die Zugänglichkeitsinformationen der Ansichten der Anwendung, die getestet wird, zuzugreifen.
Müssen Sie eine App aus dem App Store testen? Wir können den Bundle-Identifier für Sie ermitteln. Suchen Sie im Webbrowser nach der App Store-Auflistung Ihrer Anwendung und verwenden Sie diese, um die Bundle-ID Ihrer App zu finden.
Welche Zugriffsrechte hat die installierte Runner-Anwendung?
Nur die Anwendung, die Sie durch Hinzufügen des Bundle-Identifier in den Einrichtungsschritten zur Kommunikation angegeben haben. Apple ist in Sachen Sicherheit wirklich gut und verwendet eine Sandbox-Umgebung für jede auf Ihrem Gerät installierte Anwendung, unabhängig davon, wie diese Anwendung installiert wurde (Testflight, Xcode oder App Store). Die Analyzer-Anwendung nutzt die UI-Test-Funktionalität, die in Xcode/Apples Ökosystem integriert ist. Dies ist eine geschlossene Kommunikation zu einer Anwendung über den Bundle-Identifier, den Sie in der Setup-Datei angegeben haben.
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 Lauf erhalten. Führen Sie den Test erneut aus, um zu sehen, ob er sich behebt. Wenn dieser Fehler ein zweites Mal auftritt, stellen Sie sicher, dass Sie den korrekten Bundle-Identifier haben und dass die zu testende Anwendung im 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 Kontoeinstellungenbesuchen.
Kann ich automatisiertes Testen ohne Authentifizierung einrichten?
Wir bieten Offline-Builds unserer SDKs und Appium-Treiber für Ihre Automatisierungspipeline an, die keine Netzwerkabfragen an den axe DevTools Mobile-Dienst erfordern. Solche Build-Konfigurationen sind nur über Deque's Artifactoryverfügbar.
Bitte beachten Sie, dass dieser Build ein Teil der Funktionen von axeDevToolsXCUI ist. Um den vollen Funktionsumfang zu nutzen, einschließlich des Versendens der Ergebnisse an das Dashboard, verwenden Sie bitte unser axeDevToolsXCUI-Framework. Siehe das Einrichtungsanleitung.
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 halten:
var axeDevTools: AxeDevTools?- Initialisieren Sie das Framework innerhalb der
setUpodersetUpWithErrorMethoden.
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, geben Sie beliebige XCUIElement an das Framework, um Barrierefreiheitstests dagegen und gegen 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:
- 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 zielgerichteten Bericht über die in dem Branch gefundenen Probleme zu erstellen. Erstellen Sie einen Bericht mit unserem Reporter-CLI für CICD-Pipelines. Dies kann für Release-Kandidaten oder Beta-Branches sehr hilfreich sein, um das Bewusstsein für potenzielle Hindernisse, denen Kunden mit unterstützenden Technologien gegenüberstehen, zu schärfen.
Ergebnisse
Warum werden meine Ergebnisse nicht im Developer Hub angezeigt?
Wenn Sie Ihre Ergebnisse im Developer Hub nicht sehen, ü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, wenn Sie eine Testsitzung starten. Eine Projekt-ID ist nicht erforderlich, um eine Testsitzung zu starten, aber sie ist erforderlich, um Ergebnisse an den Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird automatisch eine Projekt-ID generiert.
- Rufen Sie die
postResultFunktion nach jedem Scan in Ihrem Test auf, um Ergebnisse an den Developer Hub zu senden. - Sehen Sie ein vollständiges Beispiel. Beziehen Sie sich auf die iOS Beispiel-Testklasse und vergleichen Sie sie mit Ihrer Implementierung.
Suchen Sie Ihre Projekt-ID? Sie können darauf von der Hauptprojektseite im Axe Developer Hubaus zugreifen.
- 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 der
startScanSessionMethode bereitgestellt haben.
Appium
Automatisierte Tests
Kann ich das Setup für automatisierte Tests ohne Authentifizierung durchführen?
Sie können einen Scan mit unseren Appium Offline-Treibern ausführen, indem Sie einen von Deque bereitgestellten Lizenzschlüssel verwenden. Dies kann nützlich sein, wenn Sie mit Cloud-Anbietern arbeiten oder wenn Sie Scans ohne Netzwerkaufrufe an den Axe DevTools Mobile-Dienst ausführen müssen.
Installation
Sie können die Appium Offline-Treiber mithilfe eines privaten npm-Pakets 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-offlineAlternativ können Sie es direkt von Agora herunterladen und lokal installieren. Weitere Einzelheiten finden Sie in unserer Dokumentation zu 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 an helpdesk@deque.com oder support.deque.com.
Der Lizenzschlüssel wird im Zeichenfolgenformat vorliegen 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 in axeSettingsenthalten ist.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);In axeSettingssind die folgenden optionalen Eigenschaften verfügbar:
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:
- Stellen Sie sicher, dass Sie einen gültigen Axe DevTools Mobile API-Schlüssel bereitgestellt haben, wenn Sie eine Testsitzung starten und einen Scan initiieren. 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 eine gültige Projekt-ID zusammen mit dem API-Schlüssel bereitgestellt haben, wenn Sie eine Testsitzung starten. Eine Projekt-ID ist nicht erforderlich, um eine Testsitzung zu starten, aber sie wird benötigt, um Ergebnisse an den Developer Hub zu senden. Wenn Sie ein Projekt für Ihre Ergebnisse erstellen, wird automatisch eine Projekt-ID generiert.
- Siehe vollständige Automatisierungsbeispiele für Axe DevTools Mobile für Appium und vergleichen Sie diese 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.
