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

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

Si noti che questa build è un sottoinsieme delle funzionalità di Axe DevTools Mobile per Android. Per utilizzare l'intero set di funzionalità, incluso l'invio dei risultati alla dashboard, si prega di utilizzare i nostri SDK standard o driver Appium. Fai riferimento al guida introduttiva.

Setup

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 dei Primi Passi:

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

Nel applicationdel build.gradle file, aggiungi:

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

Assicurati che vi sia il permesso di Internet nel AndroidManifest.xml:

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

Nota che il axe.loginWithUsername(...) e axe.loginWithApiKey(...) non sono disponibili in questa versione della libreria e dovrebbero essere rimossi dal codice di configurazione se stai convertendo dall'uso della 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:

  • Provide a valid Axe DevTools Mobile API key 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.
  • Provide a valid Project ID assieme alla chiave API quando inizi una sessione di test. Un ID Progetto non è necessario per avviare una sessione di test, ma è is necessario per inviare i risultati al Developer Hub. Quando Crea un Progetto per i Tuoi Risultati, un ID Progetto viene generato automaticamente.
  • Call the uploadToDashboard function dopo ogni scansione nel tuo test per inviare i risultati al Developer Hub.
  • See a full example. Fai riferimento al Classe di Test Esempio Android e confrontalo con la tua implementazione.
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 startScanSession metodo.

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 > Settings (o Preferences nelle versioni precedenti)
  2. Seleziona la scheda Accounts Seleziona il tuo
  3. Fai clic su Apple ID
  4. Click Manage Certificates
  5. Trova il certificato scaduto (avrà un'icona di avvertimento)
  6. Seleziona il certificato scaduto e fai clic sul pulsante meno () per rimuoverlo
  7. Fai clic sul pulsante più (+) e seleziona Apple Development per creare un nuovo certificato
  8. Chiudi l'app Analizzatore Mobile
  9. Avvia di nuovo l'app. Fai riferimento a 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:

  1. Revoca il certificato nel tuo account Apple Developer:
    • Vai a developer.apple.com
    • Naviga a Certificates, Identifiers & Profiles
    • 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: Window > Organizer > Projects scheda
    • Seleziona il tuo progetto e fai clic su Delete accanto a Derived Data
  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) o 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: Window > Devices and Simulators, seleziona il tuo dispositivo e copia l'identificatore
  2. Aggiungi il dispositivo al tuo account Developer:
    • Vai su developer.apple.com e accedi
    • Vai a Certificates, Identifiers & Profiles
    • Seleziona Devices 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 Continue e poi su Register
  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. 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.

tip

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, attraverso l'aggiunta dell'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 di analisi utilizza la funzionalità UI Test integrata nell'ecosistema Xcode/Apple. Questa è una comunicazione a scatola chiusa per parlare con un'applicazione tramite l'identificatore di bundle che hai 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 viene risolto. 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”: Login con Deque fallito. Controlla che la tua chiave API sia stata aggiunta al file di configurazione e sia valida per Axe DevTools Mobile visitando Impostazioni Account Axe.

Posso configurare i test automatizzati senza autenticazione?

Offriamo build offline dei nostri SDK e driver Appium per il tuo pipeline di automazione che non richiedono richieste di rete al servizio Axe DevTools Mobile. Come tale, queste configurazioni di build sono disponibili solo attraverso Artifactory di Deque.

Si prega di notare che questa build è un sottoinsieme delle funzionalità all'interno di axeDevToolsXCUI. Per utilizzare il set completo di funzionalità, incluso l'invio dei risultati al cruscotto, si prega di utilizzare il nostro framework axeDevToolsXCUI. Fare riferimento a 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 conservare 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 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 succede 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 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:

  • Provide a valid Axe DevTools Mobile API key durante l'inizializzazione del 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.
  • Provide a valid Project ID insieme alla chiave API quando avvii una sessione di test. Un ID progetto non è richiesto per avviare una sessione di test, ma è is necessario per inviare i risultati a Developer Hub. Quando Crea un Progetto per i Tuoi Risultati, un ID progetto viene generato automaticamente.
  • Call the postResult function dopo ogni scansione nel tuo test per inviare i risultati a Developer Hub.
  • See a full example. Consulta Classe di Test di Esempio iOS e confrontalo con la tua implementazione.
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 startScanSession metodo.

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-offline
iOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offline
Download diretto

In alternativa, puoi scaricarlo direttamente da Agora e installarlo localmente. Consulta la nostra documentazione su Configurazione per Cloud Privato e On Prem per maggiori dettagli.

Chiave di Licenza

Avrai bisogno di una chiave di licenza da Deque per utilizzare questa versione offline del driver Appium. Si prega di inviare una richiesta a helpdesk@deque.com o su support.deque.com.

La chiave di licenza sarà in formato stringa e apparirà 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.