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 tu flujo de automatización que no requieren ninguna solicitud 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.

Por favor, ten en cuenta que esta compilación es un subconjunto de las capacidades dentro de Axe DevTools Mobile para Android. Para utilizar el conjunto completo de capacidades, incluyendo enviar resultados al panel, por favor usa nuestros SDKs estándar o controladores Appium. Consulta el guía de primeros pasos.

Setup

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 application's build.gradle archivo, añade:

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

Asegúrate de que hay permiso de Internet en el AndroidManifest.xml:

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

Ten en cuenta que el axe.loginWithUsername(...) y el axe.loginWithApiKey(...) no están disponibles en esta versión de la biblioteca y deben ser eliminados del código de configuración si estás convirtiéndote de usar 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:

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.

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. Abre Xcode → Ve a Xcode > Settings (o Preferences en versiones anteriores)
  2. Selecciona la pestaña Accounts Selecciona tu
  3. Haz clic en Apple ID
  4. Click Manage Certificates
  5. Encuentre el certificado caducado (tendrá un ícono de advertencia)
  6. Selecciona el certificado caducado y haz clic en el botón menos () para eliminarlo
  7. Haz clic en el botón más (+) y selecciona Apple Development para crear un nuevo certificado
  8. Cierra la aplicación del Analizador Móvil
  9. Lanza la aplicación nuevamente. Consulta el 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:
    • Ve a developer.apple.com
    • Navega a Certificates, Identifiers & Profiles
    • 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: Window > Organizer > Projects pestaña
    • Selecciona tu proyecto y haz clic en Delete junto a Derived Data
  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
    • Abre 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, puedes abrir Xcode: Window > Devices and Simulators, selecciona tu dispositivo y copia el identificador
  2. Agrega el dispositivo a tu cuenta de Desarrollador:
    • Ve a developer.apple.com e inicia sesión
    • Navega a Certificates, Identifiers & Profiles
    • Seleccionar Devices desde la barra lateral
    • Haz clic en el signo más (+) para registrar un nuevo dispositivo
    • Introduce un nombre para tu dispositivo y pega el UDID
    • Haz clic en Continue y luego en Register
  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 hayas especificado para comunicarte, 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 has instalado en tu dispositivo, sin importar cómo se instaló esa aplicación (Testflight, Xcode o App Store). La aplicación del analizador utiliza la funcionalidad de Pruebas de Interfaz de Usuario 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 has 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 recibirás al ejecutar por primera vez. Vuelve a ejecutar la prueba para ver si se resuelve. Si este error aparece una segunda vez, asegúrate 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”: El inicio de sesión con Deque falló. Verifica que tu clave API haya 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 de Appium para tu pipeline de automatización que no requieren solicitudes de red al servicio de Axe DevTools Mobile. Como tal, estas configuraciones de compilación solo están disponibles a través de Artifactory de Deque.

Ten en cuenta que esta compilación es un subconjunto de capacidades dentro de axeDevToolsXCUI. Para usar el conjunto completo de capacidades, incluidas el envío de resultados al tablero, por favor utiliza nuestro marco axeDevToolsXCUI. Consulta la 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:

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

Puedes instalar los controladores offline de Appium usando 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
Descarga Directa

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

Clave de Licencia

Necesitarás una clave de licencia de Deque para usar esta versión offline del controlador Appium. Por favor envía una solicitud a 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úrate de que tu 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

¿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 axeStartSession método.