Preguntas Frecuentes

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

Analizador Móvil

¿Por qué la aplicación necesita permisos adicionales?

Al configurar la aplicación por primera vez, se le solicitará que otorgue permiso a Axe DevTools Mobile Analyzer para superposición de dibujo y configuraciones de accesibilidad. La superposición de dibujo permite que el botón de acción flotante le siga sin importar la aplicación que tenga abierta en su dispositivo. Las configuraciones de accesibilidad permiten que la aplicación analítica acceda a la información de vista dentro de la aplicación que está intentando escanear.

Pruebas Automatizadas

¿Puedo configurar pruebas automatizadas sin autenticación?

Ofrecemos compilaciones offline de nuestros SDKs y controladores Appium para su canal de automatización que no requieren solicitudes de red al servicio Axe DevTools Mobile. Como tal, estas configuraciones de compilación solo están disponibles a través de Artifactory de Deque.

Tenga en cuenta que esta compilación es un subconjunto de capacidades dentro de axeDevTools Mobile para Android. Para utilizar el conjunto completo de capacidades, incluida la publicación de resultados en el panel, utilice nuestros SDKs o controladores Appium estándar. Consulte el guía de primeros pasos.

Configuración

Mientras navegas por la documentación, ten en cuenta que no todas las funciones que requieren interacción con el servidor están disponibles en la compilación offline.

important

Lista de Verificación para Comenzar:

  • Requisitos: Android API 26 o superior
  • Conéctese a Artifactory para incorporar el framework.
Configuración para Pruebas

En el archivo archivo de build.gradle, añada:

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

Asegúrese de que haya permiso de Internet en el AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
Ejemplo de Prueba Espresso

Tenga en cuenta que el axe.loginWithUsername(...) y el axe.loginWithApiKey(...) no están disponibles dentro de esta versión de la biblioteca y deben eliminarse del código de configuración si está convirtiendo desde la versión autenticada.

Independiente del Diseño
@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()   
    }
}

Resultados

¿Por qué no aparecen mis resultados en Developer Hub?

Si no ve sus resultados en Developer Hub, verifique que haya hecho lo siguiente:

  • Proporcionar una clave API válida de Axe DevTools Mobile al inicializar la biblioteca Axe en sus pruebas. Visite Configuración de Cuenta de Axe para encontrar sus Claves API o Generar una nueva clave API de Axe DevTools Mobile.
  • Proporcionar un ID de Proyecto válido junto con la clave API al iniciar una sesión de prueba. No se requiere un ID de Proyecto para iniciar una sesión de prueba, pero es requerido para enviar resultados al Developer Hub. Cuando usted Cree un proyecto para sus resultados, se genera automáticamente un ID de Proyecto.
  • Llame a la función uploadToDashboard después de cada escaneo en su prueba para enviar resultados al Developer Hub.
  • Ver un ejemplo completo. Consulte el Clase de Prueba de Muestra de Android y compárelo con su implementación.
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

Analizador Móvil

¿Qué hago si mi Certificado de Desarrollo de Apple está caducado?

Si obtiene un error al usar la aplicación de escritorio Mobile Analyzer que indica que su Certificado de Desarrollo de Apple ha caducado, siga los pasos a continuación.

Solución rápida
  1. Abra Xcode → Vaya a Xcode > Configuración (o Preferencias en versiones anteriores)
  2. Seleccione la pestaña Cuentas
  3. Seleccione su ID de Apple
  4. Haga clic en Gestionar Certificados
  5. Encuentre el certificado caducado (tendrá un ícono de advertencia)
  6. Seleccione el certificado vencido y haga clic en el botón de menos () para eliminarlo
  7. Haga clic en el botón de más (+) y seleccione Desarrollo de Apple para crear un nuevo certificado
  8. Cierra la aplicación del Analizador Móvil
  9. Inicie la aplicación nuevamente. Consulte Prueba de aplicaciones iOS para accesibilidad si es necesario.
¿Sigue recibiendo un error?

A veces, Xcode almacena en caché el certificado antiguo. Intente lo siguiente:

  1. Revoque el certificado en su cuenta de desarrollador de Apple:
    • Vaya a developer.apple.com
    • Navegue a Certificados, Identificadores y Perfiles
    • Encuentra el certificado expirado y revócalo
    • Regresa a Xcode y repite los pasos anteriores para crear uno nuevo
  2. Borrar datos derivados:
    • En Xcode: pestaña Ventana > Organizador > Proyectos
    • Seleccione su proyecto y haga clic en Eliminar junto a Datos Derivados
  3. Reinicia Xcode después de realizar estos cambios

¿Qué hago si mi dispositivo no pudo registrarse automáticamente?

Para registrar manualmente un teléfono con tu cuenta de Apple Developer, deberás agregarlo como un dispositivo de prueba a través del portal de Apple Developer. Aquí te mostramos cómo:

  1. Obtén el UDID (Identificador Único de Dispositivo) de tu dispositivo:
    • Conecta tu iPhone a tu Mac
    • Abra Finder (macOS Catalina o posterior) o iTunes (versiones anteriores)
    • Selecciona tu dispositivo y haz clic en el número de serie hasta que muestre el UDID
    • Haz clic derecho y copia el UDID
    • Alternativamente, puede abrir Xcode: Ventana > Dispositivos y Simuladores, seleccione su dispositivo y copie el identificador
  2. Agrega el dispositivo a tu cuenta de Desarrollador:
    • Vaya a developer.apple.com e inicie sesión
    • Navegue a Certificados, Identificadores y Perfiles
    • Seleccione Dispositivos desde la barra lateral
    • Haga clic en el botón de más (+) para registrar un nuevo dispositivo
    • Introduce un nombre para tu dispositivo y pega el UDID
    • Haga clic en Continuar y luego en Registrar
  3. Reiniciar el Analizador Móvil:

Ten en cuenta que las cuentas gratuitas de desarrolladores de Apple pueden registrar hasta 3 dispositivos, mientras que las cuentas de pago pueden registrar hasta 100 dispositivos por tipo de dispositivo (100 iPhones, 100 iPads, etc.).

Pruebas Automatizadas

¿Qué es un identificador de paquete?

Un identificador de paquete es un identificador único dentro del ecosistema de Apple para la identificación de aplicaciones. No hay dos aplicaciones que puedan tener el mismo identificador. Esto incluye una compilación beta u otras variaciones de una aplicación. Axe DevTools Mobile utiliza el identificador de paquete para conectar y consultar la información de accesibilidad de las vistas de la aplicación bajo prueba.

tip

¿Necesita probar una aplicación de la App Store? Podemos obtener el identificador de paquete por usted. Busque la lista de su aplicación en la App Store desde un navegador web y úsela para encontrar el ID de paquete de tu aplicación.

¿A qué tiene acceso la Aplicación Runner instalada?

Solo la aplicación que ha especificado para comunicarse, agregando el Identificador de Paquete en los pasos de configuración. Apple es realmente excelente en seguridad y utiliza un entorno de sandbox para cada aplicación que tiene instalada en su dispositivo, sin importar cómo se instaló esa aplicación (Testflight, Xcode o App Store). La aplicación analítica utiliza la funcionalidad de prueba de UI incorporada en el ecosistema de Xcode/Apple. Esta es una comunicación de caja cerrada para hablar con una aplicación a través del identificador de paquete que ha especificado en el archivo de configuración.

Errores comunes y remediación

Si recibes un error / Prueba fallida durante las pruebas, esta sección resaltará los mensajes de error comunes y cómo resolverlos. Selecciona el icono en forma de diamante 'x' rojo, y Xcode abrirá el panel ‘Navegador de Problemas’ a la izquierda para resaltar el mensaje de error específico.

  • Cannot request screenshot data because it does not exist: Este es el mensaje de error que probablemente reciba en la primera ejecución. Ejecute la prueba nuevamente para ver si se resuelve. Si este error aparece una segunda vez, asegúrese de tener el identificador de paquete correcto en su lugar y que la aplicación a probar esté abierta en el simulador/dispositivo seleccionado.

  • caught error: “couldNotVerifyUser”: Falló el inicio de sesión con Deque. Verifique que su clave API ha sido agregada al archivo de configuración y es válida para Axe DevTools Mobile visitando Configuración de cuenta de Axe.

¿Puedo configurar pruebas automatizadas sin autenticación?

Ofrecemos compilaciones offline de nuestros SDKs y controladores Appium para su canal de automatización que no requieren solicitudes de red al servicio Axe DevTools Mobile. Como tal, estas configuraciones de compilación solo están disponibles a través de Artifactory de Deque.

Tenga en cuenta que esta compilación es un subconjunto de capacidades dentro de axeDevToolsXCUI. Para utilizar el conjunto completo de capacidades, incluida la publicación de resultados en el panel, utilice nuestro framework axeDevToolsXCUI. Consulte el guía de configuración.

Configuración
  1. Importa el marco en cualquier archivo utilizado para pruebas de accesibilidad.
import axeDevToolsXCUI_noauth
  1. Cree un objeto dentro de su clase de prueba para almacenar la instancia de Axe DevTools:
var axeDevTools: AxeDevTools?
  1. Inicialice el framework dentro de los métodos setUp o setUpWithError.
axeDevTools = AxeDevTools.startScanSession()
Ejemplo completo de configuración

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??
    }
    ...
}
Pruebas de UI

Para comenzar a probar, pase cualquier XCUIElement al framework para ejecutar pruebas de accesibilidad contra él y sus hijos.

let result = try axeDevTools.run(onElement: XCUIApplication())
Ejemplo 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
    }
}
¿Qué sigue?

Te damos los datos y herramientas para crear un flujo de trabajo CI/CD que ayude a tu equipo. Aquí tienes algunas sugerencias sobre qué hacer con ese objeto de resultado:

  1. Falla la compilación si se encontraron errores. Si tienes una pantalla que ya ha sido limpiada de problemas de accesibilidad, es posible que quieras asegurarte de que no aparezcan nuevos durante el ciclo de desarrollo afirmando que el conteo es 0 y fallando la verificación del estado de la solicitud de extracción si no es así.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)
  1. Guarda los resultados localmente para crear un informe delimitado de los problemas encontrados en la rama. Consulte cómo crear un informe con nuestro CLI de Reporter para pipelines CICD. Esto puede ser muy útil para versiones candidatas de lanzamiento o ramas beta para dar a conocer qué posibles obstáculos pueden enfrentar los clientes que usan tecnología asistiva.

Resultados

¿Por qué no aparecen mis resultados en Developer Hub?

Si no ve sus resultados en Developer Hub, verifique que haya hecho lo siguiente:

  • Proporcionar una clave API válida de Axe DevTools Mobile al inicializar el framework Axe en sus pruebas. Visite Configuración de Cuenta de Axe para encontrar sus Claves API o Generar una nueva clave API de Axe DevTools Mobile.
  • Proporcionar un ID de Proyecto válido junto con la clave API al iniciar una sesión de prueba. No se requiere un ID de Proyecto para iniciar una sesión de prueba, pero es requerido para enviar resultados al Developer Hub. Cuando usted Cree un proyecto para sus resultados, se genera automáticamente un ID de Proyecto.
  • Llame a la función postResult después de cada escaneo en su prueba para enviar resultados al Developer Hub.
  • Ver un ejemplo completo. Consulte el Clase de Prueba de Ejemplo de iOS y compárelo con su implementación.
tip

¿Busca su ID de proyecto? Puede acceder a este desde la página principal de Proyectos en Axe Developer Hub.

  • Vaya a 'Configuración' de su proyecto y seleccione 'Configurar proyecto'.
  • En los 'Detalles del proyecto' puede encontrar y copiar el ID de proyecto.
  • Asegúrese de haber proporcionado este ID de proyecto al startScanSession método.

Appium

Pruebas Automatizadas

¿Puedo configurar pruebas automatizadas sin autenticación?

Puede ejecutar un escaneo con nuestros controladores offline de Appium, utilizando una clave de licencia proporcionada por Deque. Esto puede ser útil cuando se trabaja con proveedores de nube o cuando necesita ejecutar escaneos sin hacer solicitudes de red al servicio Axe DevTools Mobile.

Instalación

Puede instalar los controladores Appium offline utilizando un paquete npm privado de Artifactory de 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

Alternativamente, puede descargarlo directamente desde Agora e instalarlo localmente. Consulte nuestra documentación en Configuración para Nube Privada y Local para más detalles.

Clave de Licencia

Necesitará una clave de licencia de Deque para usar esta versión sin conexión del controlador de Appium. Por favor envíe una solicitud helpdesk@deque.com o a support.deque.com.

La clave de licencia estará en formato de cadena y se verá algo así: eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==

Se recomienda encarecidamente añadir esta clave de licencia a tus variables de entorno por seguridad.

Escaneo sin conexión

Para ejecutar un escaneo, asegúrese de que su clave de licencia esté incluida en axeSettings.

const axeSettings = { 
  'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};

const result = await driver.execute('mobile: axeScan', axeSettings);

En axeSettings, las siguientes propiedades opcionales están disponibles:

  • ignoreRules (por defecto: [])
  • ignoreExperimental (por defecto: false)

A continuación se presentan ejemplos completos de escaneos sin conexión con nuestros controladores Appium, usando el marco de pruebas Mocha en 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);
    });
});

Resultados

¿Por qué no aparecen mis resultados en Developer Hub?

Si no ve sus resultados en Developer Hub, verifique que haya hecho lo siguiente:

tip

¿Buscando su ID de Proyecto? Puede acceder a esto desde la página principal de Proyectos en Axe Developer Hub.

  • Vaya a 'Configuración' de su proyecto y seleccione 'Configurar proyecto'.
  • En los 'Detalles del proyecto' puede encontrar y copiar el ID de proyecto.
  • Asegúrese de haber proporcionado este ID de proyecto al axeStartSession método.