Se agotó el tiempo de espera para el resultado del script asíncrono al ejecutar los scripts de transportador con appium

Tengo un problema al ejecutar más de una prueba en transportador: agotado el tiempo de espera para el resultado del script asíncrono después de 60010 s El código del script del tutorial que se ejecuta justo después del script de inicio de sesión: Aquí el código de secuencia de comandos de inicio de sesión + secuencia de comandos Tutorial

Aquí el código que estoy usando en mi archivo de configuración de un código propuesto en otra pregunta, ¡ pero no resolvió mi problema!

onPrepare: function() { return browser.getProcessedConfig().then(function(config) { var browserName = config.capabilities.browserName; browser.manage().timeouts().setScriptTimeout(60000); }); 

Aquí el archivo de configuración

PD: ¡Incluso si coloco una ubicación incorrecta para el elemento, tengo el error de tiempo de espera y no se puede encontrar este elemento! como si esa línea de código “el clic en el botón tutorial” nunca se ejecuta

  • ¿Es porque el tutorial hace una llamada ajax?

Error Aquí mi código html:

 
<!----> <!---->
Watchlist view. Swipe the row in the grid to the left to show the delete action.

Registro de Appium

Agregue el parámetro a conf.js bajo capacidades:

 maxSessions: 1, 

debería ayudar. También su intervalo de tiempo fuera demasiado alto 30000 debería ser suficiente.

O en preparar la línea de cambio a:

 browser.manage().timeouts().implicitlyWait(5000); 

@EDIT: cambiar a algo similar a esto encontró algo como esto

  1. baseUrl es 10.0.2.2 en lugar de localhost porque se usa para acceder al host local de la máquina host en el emulador / dispositivo Android
 baseUrl: 'http://10.0.2.2:' + (process.env.HTTP_PORT || '8000'), 

Capacidades nuevo comando:

  newCommandTimeout: 60 

También puede ser útil el uso de promesas en lugar de tiempos de espera

 someethingToDo.click().then(function(){ return somethingToDo.click(); }).then(function(){ //morecode }); 

1. Respecto a la verificación de ruta

En caso de que después de la primera especificación, el usuario haya iniciado sesión y la ruta haya cambiado. Asegúrese de que todos se naveguen antes de ejecutar cualquier prueba.

 expect(browser.getCurrentUrl()).toContain('#/the_route_of_logged_in'); // '#/' is just illustration. You can remove it to make it shorter // => like this ...toContain('the_route_of_logged_in'); 

2. Con respecto a hacer clic en tutorial

 browser.wait(EC.elementToBeClickable(tutorial), 10000); 

Haga el browser.wait . browser.wait con el botón para hacer clic en EC antes de intentar hacer clic en él (parece que aquí tiene un buen enfoque)

=> RESUMIENDO puede probar esto:

 'user strict'; var EC = protractor.ExpectedConditions; describe('tutorials', function () { it('should make click into tutorial button', function () { expect(browser.getCurrentUrl()).toContain('the_route_of_logged_in'); var tutorial = $('.introjs-nextbutton'); browser.wait(EC.elementToBeClickable(tutorial), 8000, 'Timed out'); tutorial.click(); browser.sleep(8080); // regardless we are not reaching this point. But I will suggest to reduce this sleep time like 1000 (1s). }); }); 

3. (opcional) en caso de que 2 puntos arriba no ayuden

En todas sus especificaciones login-spec.js y tutorial-spec.js . Agregar process.nextTick(done); en un bloque afterAll() para asegurarse de que no haya ningún Reportero Jasmine bloqueado después de una especificación.

 describe('foo', function(){ afterAll(function(done){ process.nextTick(done); }); it('should bar...', function() {}); } 

PD: Tenga cuidado de que no tengo ni idea de si mis sugerencias / enfoque podrían ayudar. Como la depuración con e2e-test siempre es dolorosa … porque siempre es probable que no sepamos “de dónde vienen los errores”. Entonces, todo lo que puedo hacer es darte sugerencias. (a veces me llevó horas observar los comportamientos del navegador para identificar un problema de e2e-test)

Y NO COPIE PEGUE mi código en su código. Lo escribí con las imágenes que me proporcionó, puedo escribir algunos errores.

Creo que es posible que tengas un problema con la configuración de tus tiempos de espera. Elimine todas las referencias de tiempo de espera de su archivo de configuración e intente algo como esto (ajuste en consecuencia para incluir otras configuraciones según sea necesario):

 exports.config = { allScriptsTimeout: 60000, getPageTimeout: 30000, jasmineNodeOpts: { defaultTimeoutInterval: 62000, } } 

Finalmente traté de resolver mi problema agregando esta llamada de nuevo

 describe("long asynchronous specs", function() { beforeEach(function(done) { done(); }, 10000); }); 

Aquí hay un enlace de Jasmine Asynchronous_Support que me ayuda a entender los problemas de tiempo de espera. Espero que pueda ayudarte,

Intereting Posts