Domande Frequenti

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

Analizzatore Mobile

Perché l'app ha bisogno di permessi aggiuntivi?

Quando si configura l'applicazione per la prima volta, ti verrà chiesto di concedere all'axe DevTools Mobile Analyzer il permesso per le impostazioni di sovrapposizione e accessibilità. Il permesso di sovrapposizione consente al pulsante di azione flottante di seguirti indipendentemente dall'app aperta sul tuo dispositivo. Le impostazioni di accessibilità permettono all'app analizzatrice di accedere alle informazioni di visualizzazione all'interno dell'applicazione che stai tentando di analizzare.

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 alcuna richiesta di rete al servizio axe DevTools Mobile. Di conseguenza, queste configurazioni di build sono disponibili solo attraverso Artifactory di Deque.

Nota che questa build è un sottoinsieme delle capacità di axeDevTools Mobile per Android. Per utilizzare l'intera gamma di funzionalità, incluso l'invio dei risultati al dashboard, utilizza i nostri SDK o driver Appium standard. Consulta la 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.

important

Elenco di controllo per iniziare:

  • Richiede: Android API 26 o superiore
  • Connettiti a Artifactory per integrare il framework.
Configurazione per il Test

Nel file dell'applicazione, aggiungi: build.gradle Assicurati di avere l'autorizzazione Internet nel

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

AndroidManifest.xml :Esempio di Test Espresso

<uses-permission android:name="android.permission.INTERNET" />
Nota che

e axe.loginWithUsername(...) non sono disponibili in questa versione della libreria e dovrebbero essere rimossi dal codice di configurazione se stai convertendo dall'uso della versione autenticata. axe.loginWithApiKey(...) Layout Indipendente

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()   
    }
}

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 per Axe DevTools Mobile .Fornisci un ID progetto valido
  • insieme alla chiave API quando inizi una sessione di test. Un ID progetto non è richiesto per avviare una sessione di test, ma è richiesto per inviare i risultati a Developer Hub. Quando Crei un progetto per i tuoi risultati , viene generato automaticamente un ID progetto.Richiama la
  • funzione uploadToDashboard function dopo ogni scansione nel tuo test per inviare i risultati al Developer Hub.
  • Vedi un esempio completo. Consulta la Classe di Test Esempio Android e confrontala con la tua implementazione.
tip

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 startScanSession method.

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
  1. Apri Xcode → Vai a Xcode > Impostazioni (o Preferenze nelle versioni precedenti)
  2. Seleziona la scheda Account
  3. Seleziona il tuo ID Apple
  4. Clicca su Gestisci Certificati
  5. Trova il certificato scaduto (avrà un'icona di avvertimento)
  6. Seleziona il certificato scaduto e clicca sul pulsante meno () per rimuoverlo
  7. Clicca sul pulsante più (+) e seleziona Sviluppo Apple per creare un nuovo certificato
  8. Chiudi l'app Mobile Analyzer
  9. Avvia di nuovo l'app. Consulta Test delle App iOS per l'Accessibilità se necessario.
Ricevi ancora un errore?

A volte Xcode memorizza nella cache il vecchio certificato. Prova il seguente:

  1. Revoca il certificato nel tuo account Apple Developer:
    • Vai a developer.apple.com
    • Naviga fino a Certificati, Identificatori e Profili
    • Trova il certificato scaduto e revocalo
    • Torna a Xcode e ripeti i passaggi sopra per crearne uno nuovo
  2. Cancella i dati derivati:
    • In Xcode: Finestra > Organizer > Progetti tab
    • Seleziona il tuo progetto e clicca su Elimina accanto a Dati Derivati
  3. 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:

  1. Ottieni l'UDID (Identificatore Unico del Dispositivo) del tuo dispositivo:
    • Collega il tuo iPhone al tuo Mac
    • Apri Finder (macOS Catalina o successivo) 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, seleziona il tuo dispositivo e copia l'identificatore
  2. Aggiungi il dispositivo al tuo account Developer:
    • Vai su developer.apple.com e accedi
    • Vai su Certificati, Identificatori e Profili
    • Seleziona Dispositivi dalla barra laterale
    • Clicca sul pulsante più (+) per registrare un nuovo dispositivo
    • Inserisci un nome per il tuo dispositivo e incolla l'UDID
    • Clicca su Continua e poi Registrati
  3. Rilancia l'Analizzatore Mobile:

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. Questo include una versione beta o altre varianti di un'applicazione. axe DevTools Mobile utilizza l'identificatore di bundle per connettersi e interrogare le informazioni sull'accessibilità delle viste dell'applicazione in test.

tip

Hai bisogno di testare un'app dall'App Store? Possiamo recuperare l'identificatore di bundle per te. Cerca l'elenco del tuo applicazione su 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 all'applicazione che hai specificato di comunicare, aggiungendo l'Identificatore di Bundle nei passaggi di configurazione. Apple è davvero eccezionale in termini 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 analizzatrice utilizza la funzionalità UITest integrata nell'ecosistema Xcode/Apple. Questa è una comunicazione chiusa per interagire 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 probabilmente riceverai al primo avvio. Esegui nuovamente il test per vedere se si risolve. Se questo errore appare una seconda volta, assicurati di avere l'identificatore di bundle corretto e che l'applicazione da testare sia aperta sul simulatore/dispositivo selezionato.

  • caught error: “couldNotVerifyUser”: Accesso con Deque fallito. Controlla che la tua chiave API sia stata aggiunta al file di configurazione ed è valida per axe DevTools Mobile visitando Impostazioni Account axe.

Posso impostare i test automatizzati senza autenticazione?

Offriamo build offline dei nostri SDK e driver Appium per la tua pipeline di automazione che non richiedono alcuna richiesta di rete al servizio axe DevTools Mobile. Pertanto, queste configurazioni di build sono disponibili solo tramite Artifactory di Deque.

Si noti che questa build è un sottoinsieme delle capacità all'interno di axeDevToolsXCUI. Per utilizzare il set completo di capacità, incluso l'invio dei risultati al dashboard, utilizza il nostro framework axeDevToolsXCUI. Consulta la guida alla configurazione.

Configurazione
  1. Importa il framework in ogni file utilizzato per i test di accessibilità.
import axeDevToolsXCUI_noauth
  1. Crea un oggetto all'interno della tua classe di test per mantenere l'istanza di axe DevTools:
var axeDevTools: AxeDevTools?
  1. Inizializza il framework all'interno dei metodi setUp o setUpWithError .
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 il test, inserisci qualsiasi XCUIElement nel framework per eseguire test di accessibilità contro di esso e i 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:

  1. 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)
  1. Salva i risultati localmente per creare un rapporto mirato sui problemi trovati nel ramo. Dai un'occhiata alla creazione di un rapporto con il nostro CLI Reporter per pipeline CICD. Questo può essere davvero utile per i rami di candidato di rilascio o beta per aumentare la consapevolezza dei potenziali ostacoli per i clienti che utilizzano la tecnologia assistiva.

Risultati

Perché i miei risultati non compaiono 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 durante l'inizializzazione del framework Axe nei tuoi test. Visita Impostazioni del Conto 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 per inviare i risultati a Developer Hub. Quando Crei un Progetto per i tuoi Risultati, un ID Progetto viene generato automaticamente.
  • Chiama la funzione postResult dopo ogni scansione nel tuo test per inviare i risultati a Developer Hub.
  • Vedi un esempio completo. Consulta la Classe di Test di Esempio iOS e confrontala con la tua implementazione.
tip

Cerchi il tuo ID Progetto? Puoi accedervi dalla pagina principale dei Progetti in Axe Developer Hub.

  • Vai su 'Impostazioni' per il tuo progetto e seleziona 'Configura Progetto'.
  • Nei 'Dettagli del Progetto' puoi trovare e copiare l'ID Progetto.
  • Assicurati di aver fornito questo ID Progetto al metodo startScanSession .

Appium

Test Automatizzati

Posso configurare un test automatizzato senza autenticazione?

Puoi eseguire una scansione con i nostri driver offline Appium, utilizzando una chiave di licenza fornita da Deque. Questo può essere utile quando lavori con fornitori cloud o quando hai bisogno di eseguire scansioni senza fare richieste di rete al servizio axe DevTools Mobile.

Installazione

Puoi installare i driver offline Appium utilizzando un pacchetto npm privato da Artifactory di Deque:

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

In alternativa, puoi scaricarlo direttamente da Agora e installarlo localmente. Consulta la nostra documentazione su Configurazione per Cloud Privato e On Prem per più 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 a helpdesk@deque.com o su support.deque.com.

La chiave di licenza sarà in formato stringa e sarà simile a questa: 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, le seguenti proprietà opzionali sono disponibili:

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

tip

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 axeStartSession metodo.