Veelgestelde Vragen
Android
Mobiele Analyzer
Waarom heeft de app extra toestemmingen nodig?
Wanneer je de applicatie voor het eerst instelt, wordt je gevraagd om Axe DevTools Mobile Analyzer toestemming te geven voor het tekenen van overlay en toegankelijkheidsinstellingen. Overlay tekenen zorgt ervoor dat de zwevende actieknop je volgt, ongeacht welke app je geopend hebt op je apparaat. Toegankelijkheidsinstellingen stellen de analyzer-app in staat om weergave-informatie binnen de applicatie die je probeert te scannen, te benaderen.
Geautomatiseerd Testen
Kan ik geautomatiseerd testen instellen zonder authenticatie?
We bieden offline builds van onze SDK's en Appium-drivers voor je automatiseringspipeline die geen netwerkverzoeken naar de Axe DevTools Mobile-service vereisen. Deze buildconfiguraties zijn derhalve alleen beschikbaar via Deque's Artifactory.
Let op dat deze build een subset van mogelijkheden binnen axeDevTools Mobile voor Android is. Om de volledige set mogelijkheden, inclusief het pushen van resultaten naar het dashboard, te gebruiken, maak gebruik van onze standaard SDK's of Appium-drivers. Raadpleeg de handleiding voor de eerste stappen.
Setup
Bij het navigeren door de documentatie, houd er rekening mee dat niet alle functies die serverinteractie vereisen beschikbaar zijn in de offline build.
Checklist voor de Start:
- Vereist: Android API 26 of hoger
- Verbind met Artifactory om het framework binnen te halen.
Setup voor Testen
Voeg in het applicatie-bestand van build.gradle toe:
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Zorg ervoor dat er internettoestemming is in de AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />Espresso Test Voorbeeld
Merk op dat de axe.loginWithUsername(...) en axe.loginWithApiKey(...) niet beschikbaar zijn in deze versie van de bibliotheek en uit de setup-code moeten worden verwijderd als je van de geauthenticeerde versie overschakelt.
Layout-onafhankelijk
@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()
}
}Resultaten
Waarom verschijnen mijn resultaten niet in Developer Hub?
Als u uw resultaten niet ziet in Developer Hub, controleer dan of u het volgende heeft gedaan:
- Zorg voor een geldige Axe DevTools Mobile API-sleutel bij het initialiseren van de Axe-bibliotheek in je tests. Bezoek Axe Accountinstellingen om je API-sleutels te vinden of Genereer een nieuwe Axe DevTools Mobile API-sleutel.
- Zorg voor een geldige Project-ID samen met de API-sleutel bij het starten van een testsessie. Een project-ID is niet vereist om een testsessie te starten, maar het *is* vereist om resultaten naar Developer Hub te verzenden. Wanneer je Een Project voor Uw Resultaten Creëert, wordt er automatisch een project-ID gegenereerd.
- Roep de
uploadToDashboard-functie aan na elke scan in je test om resultaten naar Developer Hub te verzenden. - Zie een volledig voorbeeld. Raadpleeg de Android Sample Test Class en vergelijk deze met je implementatie.
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
Mobiele Analyzer
Wat moet ik doen als mijn Apple Development Certificaat is verlopen?
Als u een foutmelding krijgt bij het gebruik van de Mobile Analyzer Desktop App waarin staat dat uw Apple Development Certificaat is verlopen, volg dan de onderstaande stappen.
Snelle oplossing
- Open Xcode → Ga naar Xcode > Instellingen (of Voorkeuren op oudere versies)
- Selecteer het Accounts-tabblad
- Selecteer je Apple ID
- Klik op Certificaten beheren
- Zoek het verlopen certificaat (het zal een waarschuwingspictogram hebben)
- Selecteer het verlopen certificaat en klik op de min (−) knop om het te verwijderen
- Klik op de plus (+) knop en selecteer Apple Development om een nieuw certificaat aan te maken
- Sluit de Mobile Analyzer-app
- Start de app opnieuw. Raadpleeg Test iOS-apps op toegankelijkheid indien nodig.
Nog steeds een foutmelding?
Soms cachet Xcode het oude certificaat. Probeer het volgende:
- Herroep het certificaat in uw Apple Developer-account:
- Ga naar developer.apple.com
- Navigeer naar Certificaten, ID's & Profielen
- Vind het verlopen certificaat en herroep het
- Ga terug naar Xcode en herhaal de bovenstaande stappen om een nieuwe te maken
- Wis afgeleide gegevens:
- In Xcode: Venster > Organisator > Projecten tabblad
- Selecteer je project en klik Verwijderen naast Afgeleide Gegevens
- Herstart Xcode nadat je deze wijzigingen hebt gemaakt
Wat moet ik doen als mijn apparaat niet automatisch kon worden geregistreerd?
Om een telefoon handmatig te registreren met je Apple Developer-account, moet je deze toevoegen als testapparaat via het Apple Developer-portaal. Hier is hoe:
- Verkrijg de UDID (Unique Device Identifier) van je apparaat:
- Verbind je iPhone met je Mac
- Open Finder (macOS Catalina of later) of iTunes (oudere versies)
- Selecteer je apparaat en klik op het serienummer tot het de UDID weergeeft
- Klik met de rechtermuisknop en kopieer de UDID
- Je kunt ook Xcode openen: Venster > Apparaten en Simulators, selecteer je apparaat en kopieer de identifier
- Voeg het apparaat toe aan je Developer-account:
- Ga developer.apple.com en log in
- Navigeer naar Certificaten, ID's & Profielen
- Selecteer Apparaten uit de zijbalk
- Klik op de plus (+) knop om een nieuw apparaat te registreren
- Voer een naam in voor je apparaat en plak de UDID
- Klik op **Doorgaan** en vervolgens **Registreren**
- Herstart de Mobile Analyzer:
- Sluit de Mobile Analyzer-app
- Start de app opnieuw. Raadpleeg Test iOS-apps op toegankelijkheid indien nodig.
Houd er rekening mee dat gratis Apple Developer-accounts tot 3 apparaten kunnen registreren, terwijl betaalde accounts tot 100 apparaten per apparaattype kunnen registreren (100 iPhones, 100 iPads, enz.).
Geautomatiseerd Testen
Wat is een bundel-ID?
Een bundelidentifier is een unieke identifier binnen Apple's ecosysteem voor applicatie-identificatie. Geen twee applicaties kunnen dezelfde identifier hebben. Dit omvat een bètabuild of andere varianten van een applicatie. Axe DevTools Mobile gebruikt de bundelidentifier om verbinding te maken en de toegankelijkheidsinformatie van de weergaven van de applicatie onder test op te vragen.
Moet je een app uit de App Store testen? We kunnen de bundelidentifier voor je ophalen. Zoek de App Store-vermelding van je applicatie via een webbrowser en gebruik deze om de bundel-ID van je app te vinden.
Waar heeft de geïnstalleerde Runner Application toegang toe?
Alleen de applicatie die je hebt gespecificeerd om mee te communiceren, door het toevoegen van de bundelidentifier in de setup-stappen. Apple is erg goed in beveiliging en gebruikt een sandbox-omgeving voor elke applicatie die je op je apparaat hebt geïnstalleerd, ongeacht hoe die applicatie is geïnstalleerd (Testflight, Xcode of App Store). De analyzer-applicatie maakt gebruik van de UI Test-functionaliteit die ingebouwd is in Xcode/Apple's ecosysteem. Dit is een gesloten-boxcommunicatie om te praten met een applicatie via de bundelidentifier die je hebt gespecificeerd in het setup-bestand.
Veelvoorkomende Fouten en Oplossingen
Als je een foutmelding krijgt / Test Mislukt tijdens het testen, zal dit gedeelte de veelvoorkomende foutmeldingen en hoe je ze kunt oplossen belichten. Selecteer het ruitvormige rode ‘x’-icoon en Xcode zal het ‘Issue Navigator’-paneel aan de linkerkant openen om het specifieke foutbericht te markeren.
-
Cannot request screenshot data because it does not exist: Dit is de foutmelding die je waarschijnlijk bij de eerste keer draaien krijgt. Voer de test opnieuw uit om te zien of het is opgelost. Als deze fout een tweede keer verschijnt, zorg ervoor dat je de juiste bundelidentifier hebt en dat de te testen applicatie open is op de geselecteerde simulator/apparaat. -
caught error: “couldNotVerifyUser”: Inloggen met Deque is mislukt. Controleer of je API-sleutel is toegevoegd aan het setup-bestand en geldig is voor Axe DevTools Mobile door Axe Accountinstellingen te bezoeken.
Kan ik opzetten voor geautomatiseerd testen zonder authenticatie?
We bieden offline builds van onze SDK's en Appium-drivers voor je automatiseringspipeline die geen netwerkverzoeken naar de Axe DevTools Mobile-service vereisen. Deze buildconfiguraties zijn derhalve alleen beschikbaar via Deque's Artifactory.
Let op dat deze build een subset van mogelijkheden binnen axeDevToolsXCUI is. Om de volledige set mogelijkheden, inclusief het pushen van resultaten naar het dashboard, te gebruiken, maak gebruik van ons axeDevToolsXCUI-framework. Raadpleeg de installatiegids.
Setup
- Importeer het framework in ieder bestand dat wordt gebruikt voor toegankelijkheidstesten.
import axeDevToolsXCUI_noauth- Maak een object binnen je testklasse aan om de Axe DevTools-instantie vast te houden:
var axeDevTools: AxeDevTools?- Initialiseer het framework binnen de
setUp- ofsetUpWithError-methoden.
axeDevTools = AxeDevTools.startScanSession()Volledig Setup Voorbeeld
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
Om te beginnen met testen, voer een willekeurige XCUIElement in het framework in om toegankelijkheidstests ertegen en zijn kinderen uit te voeren.
let result = try axeDevTools.run(onElement: XCUIApplication())Volledig Voorbeeld
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
}
}Wat nu?
We geven je de data en tools om een CI/CD-workflow te creëren die je team helpt. Hier zijn een paar suggesties voor wat je met dat resultaatobject kunt doen:
- Laat de build mislukken als er fouten werden gevonden. Als je een scherm hebt dat al is ontdaan van toegankelijkheidsproblemen, wil je misschien ervoor zorgen dat er geen nieuwe problemen in de ontwikkelingscyclus sluipen door te bevestigen dat het aantal 0 is, en de pull-request statuscheck te laten falen als dat niet zo is.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- Bewaar de resultaten lokaal om een afgebakend rapport te maken van de problemen die in de branch zijn gevonden. Bekijk het maken van een rapport met onze Reporter CLI voor CICD pijplijnen. Dit kan erg nuttig zijn voor releasekandidaten of bètabranches om inzicht te geven in potentiële obstakels waar klanten met assistive technologie tegenaan kunnen lopen.
Resultaten
Waarom verschijnen mijn resultaten niet in Developer Hub?
Als u uw resultaten niet ziet in Developer Hub, controleer dan of u het volgende heeft gedaan:
- Zorg voor een geldige Axe DevTools Mobile API-sleutel bij het initialiseren van het Axe-framework in je tests. Bezoek Axe Accountinstellingen om je API-sleutels te vinden of Genereer een nieuwe Axe DevTools Mobile API-sleutel.
- Zorg voor een geldige Project-ID samen met de API-sleutel bij het starten van een testsessie. Een project-ID is niet vereist om een testsessie te starten, maar het *is* vereist om resultaten naar Developer Hub te verzenden. Wanneer je Een Project voor Uw Resultaten Creëert, wordt er automatisch een project-ID gegenereerd.
- Roep de
postResult-functie aan na elke scan in je test om resultaten naar Developer Hub te verzenden. - Zie een volledig voorbeeld. Raadpleeg de iOS Voorbeeld Testklasse en vergelijk deze met je implementatie.
Op zoek naar uw Project-ID? U kunt deze vinden op de hoofdprojectenpagina in Axe Developer Hub.
- Ga naar 'Instellingen' voor uw project en selecteer 'Project Configureren'.
- In de 'Projectdetails' kunt u het Project-ID vinden en kopiëren.
- Zorg ervoor dat u dit Project-ID heeft verstrekt aan de
startScanSessionmethode.
Appium
Geautomatiseerd Testen
Kan ik opzetten voor geautomatiseerd testen zonder authenticatie?
Je kunt een scan uitvoeren met onze Appium offline-drivers, gebruikmakend van een licentiesleutel verstrekt door Deque. Dit kan nuttig zijn bij werken met cloudproviders of wanneer je scans moet uitvoeren zonder netwerkverzoeken te maken naar de Axe DevTools Mobile-service.
Installatie
Je kunt de Appium offline-drivers installeren met een privaat npm-pakket van 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-offlineJe kunt het ook direct downloaden van Agora en lokaal installeren. Raadpleeg onze documentatie op Instellen voor Private Cloud en On Prem voor meer details.
Licentiesleutel
Je hebt een licentiesleutel van Deque nodig om deze offline versie van de Appium-driver te gebruiken. Stuur een verzoek naar naar helpdesk@deque.com of op support.deque.com.
De licentiesleutel zal in string formaat zijn en er ongeveer zo uitzien:
eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==
Het wordt sterk aanbevolen om deze licentiesleutel aan je omgevingsvariabelen toe te voegen voor de veiligheid.
Offline Scannen
Om een scan uit te voeren, zorg ervoor dat je licentiesleutel is opgenomen in axeSettings.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);In axeSettings zijn de volgende optionele eigenschappen beschikbaar:
ignoreRules(standaard:[])ignoreExperimental(standaard:false)
Hieronder staan volledige voorbeelden van offline scans met onze Appium-drivers, gebruikmakend van het Mocha-testframework 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);
});
});Resultaten
Waarom verschijnen mijn resultaten niet in Developer Hub?
Als u uw resultaten niet ziet in Developer Hub, controleer dan of u het volgende heeft gedaan:
- Zorg ervoor dat je een geldige Axe DevTools Mobile API-sleutel hebt verstrekt bij het starten van een testsessie en het initiëren van een scan. Bezoek Axe Account Instellingen om je API-sleutels te vinden of Genereer een nieuwe Axe DevTools Mobile API-sleutel.
- Zorg ervoor dat je een geldige Project ID hebt verstrekt samen met de API-sleutel bij het starten van een testsessie. Een Project ID is niet vereist om een testsessie te starten, maar het *is* vereist om resultaten naar Developer Hub te sturen. Wanneer je Een Project voor Uw Resultaten Creëert, wordt er automatisch een Project ID gegenereerd.
- Zie volledige automatiseringsvoorbeelden van Axe DevTools Mobile voor Appium en vergelijk met je implementatie.
Op zoek naar je Project ID? Je kunt deze vinden op de hoofdpagina van Projecten in Axe Developer Hub.
- Ga naar 'Instellingen' voor uw project en selecteer 'Project Configureren'.
- In de 'Projectdetails' kunt u het Project-ID vinden en kopiëren.
- Zorg ervoor dat u dit Project-ID heeft verstrekt aan de
axeStartSessionmethode.
