Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Acelerar las pruebas basadas en Appium en Device Farm con las capacidades deseadas
Cuando se utiliza Appium, se puede encontrar que el conjunto de pruebas de modo estándar es muy lento. Esto se debe a que Device Farm aplica la configuración predeterminada y no hace suposiciones sobre cómo desea utilizar el entorno de Appium. Si bien estos valores predeterminados se basan en las prácticas recomendadas del sector, es posible que no se apliquen a su situación. Para ajustar los parámetros del servidor Appium, puede ajustar las capacidades predeterminadas de Appium en sus especificaciones de prueba. Por ejemplo, lo siguiente establece la capacidad de usePrebuildWDA
en true
de un conjunto de pruebas de iOS para acelerar el tiempo de inicio inicial:
phases: pre_test: - # ... Start up Appium - >- appium --log-timestamp --default-capabilities "{\"usePrebuiltWDA\": true, \"derivedDataPath\":\"$DEVICEFARM_WDA_DERIVED_DATA_PATH\", \"deviceName\": \"$DEVICEFARM_DEVICE_NAME\", \"platformName\":\"$DEVICEFARM_DEVICE_PLATFORM_NAME\", \"app\":\"$DEVICEFARM_APP_PATH\", \"automationName\":\"XCUITest\", \"udid\":\"$DEVICEFARM_DEVICE_UDID_FOR_APPIUM\", \"platformVersion\":\"$DEVICEFARM_DEVICE_OS_VERSION\"}" >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &
Las capacidades de Appium deben ser una estructura encuadrada entre comillas. JSON
Las siguientes capacidades de Appium son fuentes comunes de mejoras en el rendimiento:
noReset
yfullReset
-
Estas dos capacidades, que se excluyen mutuamente, describen el comportamiento de Appium una vez finalizada cada sesión. Cuando
noReset
está configurado en la opcióntrue
, el servidor de Appium no elimina los datos de la aplicación al finalizar una sesión de Appium, por lo que no realiza ningún tipo de limpieza.fullReset
desinstala y borra todos los datos de la aplicación del dispositivo una vez cerrada la sesión. Para obtener más información, consulte Restablecer estrategiasen la documentación de Appium. ignoreUnimportantViews
(solo para Android)-
Indica a Appium que comprima la jerarquía de la interfaz de usuario de Android solo para incluir las vistas relevantes para la prueba, lo que acelera las búsquedas de ciertos elementos. Sin embargo, esto puede estropear algunos conjuntos de pruebas XPath basados en bases porque se ha cambiado la jerarquía del diseño de la interfaz de usuario.
skipUnlock
(solo para Android)-
Informa a Appium de que actualmente no hay ningún PIN código configurado, lo que acelera las pruebas después de un evento de apagado de la pantalla u otro evento de bloqueo.
webDriverAgentUrl
(solo iOS)-
Indica a Appium que asuma que una dependencia esencial de iOS ya está en ejecución y disponible para aceptar HTTP solicitudes en las fechas especificadas.
webDriverAgent
URL SiwebDriverAgent
aún no está en funcionamiento, Appium puede tardar algún tiempo al principio de un conjunto de pruebas en iniciar elwebDriverAgent
. Si iniciawebDriverAgent
usted mismo y configurawebDriverAgentUrl
comohttp://localhost:8100
al iniciar Appium, podrá arrancar su conjunto de pruebas más rápido. Tenga en cuenta que esta capacidad nunca debe usarse junto con la capacidaduseNewWDA
.Puede usar el siguiente código para empezar
webDriverAgent
desde el archivo de especificaciones de prueba en el puerto local del dispositivo8100
y, a continuación, reenviarlo al puerto local del host de la prueba8100
(esto te permite establecer el valor dewebDriverAgentUrl
comohttp://localhost:8100
). Este código debe ejecutarse durante la fase de instalación, una vez que se haya definido cualquier código para configurar las variables de Appium y de entornowebDriverAgent
:# Start WebDriverAgent and iProxy - >- xcodebuild test-without-building -project /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -derivedDataPath $DEVICEFARM_WDA_DERIVED_DATA_PATH -destination id=$DEVICEFARM_DEVICE_UDID_FOR_APPIUM IPHONEOS_DEPLOYMENT_TARGET=$DEVICEFARM_DEVICE_OS_VERSION GCC_TREAT_WARNINGS_AS_ERRORS=0 COMPILER_INDEX_STORE_ENABLE=NO >> $DEVICEFARM_LOG_DIR/webdriveragent_log.txt 2>&1 & iproxy 8100 8100 >> $DEVICEFARM_LOG_DIR/iproxy_log.txt 2>&1 &
Luego, puede añadir el siguiente código a su archivo de especificaciones de prueba para asegurarse de que
webDriverAgent
se haya iniciado correctamente. Este código debe ejecutarse al final de la fase de prueba previa después de garantizar que Appium se haya iniciado correctamente:# Wait for WebDriverAgent to start - >- start_wda_timeout=0; while [ true ]; do if [ $start_wda_timeout -gt 60 ]; then echo "WebDriverAgent server never started in 60 seconds."; exit 1; fi; grep -i "ServerURLHere" $DEVICEFARM_LOG_DIR/webdriveragent_log.txt >> /dev/null 2>&1; if [ $? -eq 0 ]; then echo "WebDriverAgent REST http interface listener started"; break; else echo "Waiting for WebDriverAgent server to start. Sleeping for 1 seconds"; sleep 1; start_wda_timeout=$((start_wda_timeout+1)); fi; done;
Para obtener más información sobre las capacidades que admite Appium, consulte las capacidades deseadas de Appium
Para ver más formas de ampliar tu conjunto de pruebas y optimizar tus pruebas, consulta. Ampliación de los entornos de prueba personalizados en Device Farm