Domande Frequenti
Android
Mobile Analyzer
Perché l'app ha bisogno di permessi aggiuntivi?
Quando configuri l'applicazione per la prima volta, ti verrà chiesto di concedere all'Axe DevTools Mobile Analyzer i permessi per il disegno su overlay e le impostazioni di accessibilità. Il disegno su overlay permette al pulsante di azione flottante di seguirti indipendentemente dall'app aperta sul tuo dispositivo. Le impostazioni di accessibilità permettono all'app dell'analizzatore di accedere alle informazioni delle visualizzazioni all'interno dell'applicazione che stai cercando di scansionare.
Test Automatizzati
Posso configurare i test automatizzati senza autenticazione?
Offriamo build offline dei nostri SDK e driver Appium per la tua pipeline di automazione che non richiedono richieste di rete al servizio Axe DevTools Mobile. Pertanto, queste configurazioni di build sono disponibili solo tramite Artifactory di Deque.
Si prega di notare che questa build è un sottoinsieme delle funzionalità di axeDevTools Mobile per Android. Per utilizzare l'intera gamma di funzionalità, incluso l'invio dei risultati al dashboard, utilizzare i nostri SDK standard o i driver Appium. Consulta il guida introduttiva.
Configurazione
Durante la navigazione nella documentazione, nota che non tutte le funzionalità che richiedono interazione con il server sono disponibili nella build offline.
Elenco di controllo per iniziare:
- Richiede: Android API 26 o superiore
- Connettiti a Artifactory per integrare il framework.
Configurazione per il Test
Nel file build.gradle di file dell'applicazione, aggiungi:
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Assicurati che ci sia il permesso per Internet in ::
<uses-permission android:name="android.permission.INTERNET" />Nota che
Nota che axe.loginWithUsername(...) e axe.loginWithApiKey(...) non sono disponibili in questa versione della libreria e dovrebbero essere rimossi dal codice di configurazione se stai passando dalla versione autenticata.
Risultati
@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()
}
}Risultati
Perché i miei risultati non appaiono in Developer Hub?
Se non vedi i tuoi risultati in Developer Hub, verifica di aver fatto quanto segue:
- Fornisci una chiave API valida di Axe DevTools Mobile quando inizializzi la libreria Axe nei tuoi test. Visita Impostazioni account Axe per trovare le tue chiavi API o Genera una nuova chiave API di Axe DevTools Mobile.
- Fornisci un ID Progetto valido insieme alla chiave API quando avvii una sessione di test. Un ID progetto non è richiesto per iniziare una sessione di test, ma necessario necessario per inviare i risultati a Developer Hub. Quando Crea un Progetto per i Tuoi Risultati, un ID progetto viene generato automaticamente.
- Chiama la funzione
uploadToDashboarddopo ogni scansione nel tuo test per inviare i risultati a Developer Hub. - Vedi un esempio completo. Consulta il Classe di Test Esempio Android e confrontalo con la tua implementazione.
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
Cosa faccio se il mio Certificato di Sviluppo Apple è scaduto?
Se ricevi un errore usando l'app Desktop di Mobile Analyzer che dice che il tuo Certificato di Sviluppo Apple è scaduto, segui i passaggi seguenti.
Soluzione Rapida
- Apri Xcode → Vai a Xcode > Impostazioni (o Preferenze nelle versioni precedenti)
- Seleziona la scheda Account
- Seleziona il tuo ID Apple
- Fai clic su Gestisci Certificati
- Trova il certificato scaduto (avrà un'icona di avvertimento)
- Seleziona il certificato scaduto e fai clic sul pulsante meno (−) per rimuoverlo
- Fai clic sul pulsante più (+) e seleziona Sviluppo Apple per creare un nuovo certificato
- Chiudi l'app Analizzatore Mobile
- Avvia nuovamente l'app. Consulta Testare le App iOS per l'Accessibilità se necessario.
Ricevi ancora un errore?
A volte Xcode memorizza nella cache il vecchio certificato. Prova il seguente:
- Revoca il certificato nel tuo account Apple Developer:
- Vai a developer.apple.com
- Naviga a Certificati, Identificatori e Profili
- Trova il certificato scaduto e revocalo
- Torna a Xcode e ripeti i passaggi sopra per crearne uno nuovo
- Cancella i dati derivati:
- In Xcode: scheda Finestra > Organizer > Progetti
- Seleziona il tuo progetto e fai clic su Elimina accanto a Dati Derivati
- Riavvia Xcode dopo aver effettuato queste modifiche
Cosa fare se il mio dispositivo non può essere registrato automaticamente?
Per registrare manualmente un telefono con il tuo account Apple Developer, devi aggiungerlo come dispositivo di test tramite il portale Apple Developer. Ecco come:
- Ottieni l'UDID (Identificatore Unico del Dispositivo) del tuo dispositivo:
- Collega il tuo iPhone al tuo Mac
- Apri Finder (macOS Catalina o versioni successive) oppure iTunes (versioni precedenti)
- Seleziona il tuo dispositivo e fai clic sul numero di serie fino a quando viene visualizzato l'UDID
- Fai clic destro e copia l'UDID
- In alternativa, puoi aprire Xcode: Finestra > Dispositivi e Simulatori, selezionare il tuo dispositivo e copiare l'identificatore
- Aggiungi il dispositivo al tuo account Developer:
- Vai su developer.apple.com e accedi
- Naviga a Certificati, Identificatori e Profili
- Seleziona Dispositivi dalla barra laterale
- Fai clic sul pulsante più (+) per registrare un nuovo dispositivo
- Inserisci un nome per il tuo dispositivo e incolla l'UDID
- Fai clic su Continua e poi su Registrati
- Rilancia l'Analizzatore Mobile:
- Chiudi l'app Analizzatore Mobile
- Avvia nuovamente l'app. Consulta Testare le App iOS per l'Accessibilità se necessario.
Tieni presente che gli account gratuiti Apple Developer possono registrare fino a 3 dispositivi, mentre gli account a pagamento possono registrare fino a 100 dispositivi per tipo di dispositivo (100 iPhone, 100 iPad, ecc.).
Test Automatizzati
Cos'è un identificatore di bundle?
Un identificatore di bundle è un identificatore univoco all'interno dell'ecosistema Apple per l'identificazione delle applicazioni. Nessuna applicazione può avere lo stesso identificatore. Ciò include una build beta o altre varianti di un'applicazione. Axe DevTools Mobile utilizza l'identificatore di bundle per connettersi e interrogare le informazioni di accessibilità delle visualizzazioni dell'applicazione in prova.
Hai bisogno di testare un'app dello Store? Possiamo ottenere l'identificatore di bundle per te. Cerca l'elenco del tuo applicazione sull'App Store da un browser web e usalo per trovare il Bundle ID della tua app.
A cosa ha accesso l'App Runner installata?
Solo l'applicazione che hai specificato per comunicare, tramite l'aggiunta dell'identificatore di bundle nei passaggi di configurazione. Apple è davvero eccezionale in materia di sicurezza, e utilizza un ambiente sandbox per ogni applicazione installata sul tuo dispositivo, indipendentemente da come è stata installata (Testflight, Xcode o App Store). L'applicazione dell'analizzatore utilizza la funzionalità di test UI incorporata nell'ecosistema di Xcode/Apple. Questa è una comunicazione a scatola chiusa per comunicare con un'applicazione tramite l'identificatore di bundle specificato nel file di configurazione.
Errori Comuni e Risoluzione
Se riscontri un errore/Test Fallito durante il test, questa sezione evidenzierà i messaggi di errore comuni e come risolverli. Seleziona l'icona 'x' rossa a forma di diamante e Xcode aprirà il pannello 'Navigatore Problemi' a sinistra per evidenziare il messaggio errore specifico.
-
Cannot request screenshot data because it does not exist: Questo è il messaggio di errore che sei probabile ottenere al primo avvio. Esegui nuovamente il test per vedere se si risolve. Se questo errore appare una seconda volta, assicurati di avere il corretto identificatore di bundle e che l'applicazione da testare sia aperta sul simulatore/dispositivo selezionato. -
caught error: “couldNotVerifyUser”: Accesso con Deque fallito. Verifica che la tua chiave API sia stata aggiunta al file di configurazione, ed è valida per Axe DevTools Mobile visitando Impostazioni Account Axe.
Posso configurare un test automatizzato senza autenticazione?
Offriamo build offline dei nostri SDK e driver Appium per la tua pipeline di automazione che non richiedono richieste di rete al servizio Axe DevTools Mobile. Pertanto, queste configurazioni di build sono disponibili solo tramite Artifactory di Deque.
Si prega di notare che questa build è un sottoinsieme delle funzionalità di axeDevToolsXCUI. Per utilizzare l'intera gamma di funzionalità, incluso l'invio dei risultati al dashboard, utilizza il nostro framework axeDevToolsXCUI. Consulta il guida alla configurazione.
Configurazione
- Importa il framework in ogni file utilizzato per i test di accessibilità.
import axeDevToolsXCUI_noauth- Crea un oggetto all'interno della tua classe di test per conservare l'istanza di Axe DevTools:
var axeDevTools: AxeDevTools?- Inizializza il framework all'interno dei metodi
setUposetUpWithError.
axeDevTools = AxeDevTools.startScanSession()Esempio Completo di Configurazione
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??
}
...
}Test UI
Per iniziare i test, inserisci qualsiasi XCUIElement nel framework per eseguire test di accessibilità su di esso e sui suoi figli.
let result = try axeDevTools.run(onElement: XCUIApplication())Esempio Completo
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
}
}Cosa c'è dopo
Ti forniamo i dati e gli strumenti per creare un flusso di lavoro CI/CD che aiuti il tuo team. Ecco alcuni suggerimenti su cosa fare con quell'oggetto risultato:
- Blocca il build se sono stati trovati errori. Se hai uno schermo che è già stato liberato da problemi di accessibilità, potresti voler assicurarti che non ne appaiano di nuovi nel ciclo di sviluppo, affermando che il conteggio è 0, e fallendo il controllo dello stato della pull-request se non lo è.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- Salva i risultati localmente per creare un report limitato dei problemi trovati nel branch. Controlla la creazione di un report con il nostro CLI Reporter per pipeline CICD. Questo può essere davvero utile per i branch candidati al rilascio o beta per portare consapevolezza su quali potenziali ostacoli potrebbero affrontare i clienti che utilizzano tecnologie assistive.
Risultati
Perché i miei risultati non appaiono in Developer Hub?
Se non vedi i tuoi risultati in Developer Hub, verifica di aver fatto quanto segue:
- Fornisci una chiave API valida di Axe DevTools Mobile quando inizializzi il framework Axe nei tuoi test. Visita Impostazioni account Axe per trovare le tue chiavi API o Genera una nuova chiave API di Axe DevTools Mobile.
- Fornisci un ID Progetto valido insieme alla chiave API quando avvii una sessione di test. Un ID progetto non è richiesto per iniziare una sessione di test, ma necessario necessario per inviare i risultati a Developer Hub. Quando Crea un Progetto per i Tuoi Risultati, un ID progetto viene generato automaticamente.
- Chiama la funzione
postResultdopo ogni scansione nel tuo test per inviare i risultati a Developer Hub. - Vedi un esempio completo. Consulta il Classe di Test di Esempio iOS e confrontalo con la tua implementazione.
Cerchi il tuo ID Progetto? Puoi accedervi dalla pagina principale dei Progetti in Axe Developer Hub.
- Vai su 'Impostazioni' del tuo progetto e seleziona 'Configura Progetto'.
- Nella sezione 'Dettagli del Progetto' puoi trovare e copiare l'ID Progetto.
- Assicurati di aver fornito questo ID Progetto al
startScanSessionmetodo.
Appium
Test Automatizzati
Posso configurare un test automatizzato senza autenticazione?
Puoi eseguire una scansione con i nostri driver Appium offline, utilizzando una chiave di licenza fornita da Deque. Questo può essere utile quando lavori con fornitori di cloud o quando devi eseguire scansioni senza fare richieste di rete al servizio Axe DevTools Mobile.
Installazione
Puoi installare i driver Appium offline utilizzando un pacchetto npm privato da Artifactory di Deque:
Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineIn alternativa, puoi scaricarlo direttamente da Agora e installarlo localmente. Consulta la nostra documentazione su Configurazione per Cloud Privato e On Prem per ulteriori dettagli.
Chiave di Licenza
Avrai bisogno di una chiave di licenza da Deque per utilizzare questa versione offline del driver Appium. Per favore, invia una richiesta helpdesk@deque.com o su support.deque.com.
La chiave di licenza sarà in formato stringa e apparirà più o meno così:
eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==
È altamente consigliato aggiungere questa chiave di licenza alle tue variabili di ambiente per motivi di sicurezza.
Scansione Offline
Per eseguire una scansione, assicurati che la tua chiave di licenza sia inclusa in axeSettings.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);In axeSettings, sono disponibili le seguenti proprietà opzionali:
ignoreRules(predefinito:[])ignoreExperimental(predefinito:false)
Qui di seguito sono riportati esempi completi di scansioni offline con i nostri driver Appium, utilizzando il framework di test Mocha 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);
});
});Risultati
Perché i miei risultati non appaiono in Developer Hub?
Se non vedi i tuoi risultati in Developer Hub, verifica di aver fatto quanto segue:
- Assicurati di aver fornito una chiave API Axe DevTools Mobile valida quando avvii una sessione di test e inizi una scansione. Visita le Impostazioni dell'account Axe per trovare le tue chiavi API o Genera una nuova chiave API di Axe DevTools Mobile.
- Assicurati di aver fornito un ID Progetto valido insieme alla chiave API quando avvii una sessione di test. Un ID Progetto non è richiesto per avviare una sessione di test, ma necessario richiesto per inviare i risultati al Developer Hub. Quando Crea un Progetto per i Tuoi Risultati, un ID Progetto viene generato automaticamente.
- Vedi esempi completi di automazione di Axe DevTools Mobile per Appium e confronta con la tua implementazione.
Cerchi il tuo ID Progetto? Puoi accedervi dalla pagina principale dei Progetti in Axe Developer Hub.
- Vai su 'Impostazioni' del tuo progetto e seleziona 'Configura Progetto'.
- Nella sezione 'Dettagli del Progetto' puoi trovare e copiare l'ID Progetto.
- Assicurati di aver fornito questo ID Progetto al
axeStartSessionmetodo.
