es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

JMeter beanshell: Error al invocar el método bsh: eval al intentar borrar la cookie/caché.

Estoy intentando borrar las cookies y caché en medio de un grupo de hilos, para poder iniciar sesión en la aplicación de prueba con otro usuario. Escribí el siguiente código beanshell en JMeter.

import org.apache.jmeter.protocol.http.control.CookieManager;

CookieManager manager = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager").getObjectValue();

manager.clear();

Obtuve el siguiente error en los registros de mi JMeter.

Error al invocar el método bsh:eval
Archivo de origen: evaluación en línea de: "...import org.apache.jmeter.protocol.http.control.CookirManager;..." Error de análisis de token; error léxico en línea 3, columna 59. Encontrado: "\u201c" (8220), después de: ""

Intenté usar el postprocesador JSR223 para borrar la caché con el siguiente código:

sampler.getCacheManager().clear();
sampler.getCookieManager().clear();

Pero este código se comporta de forma global y comienza a borrar la caché y las cookies en cada muestreador durante el resto del script, lo cual está causando problemas de autenticación.

Por favor, avíseme si hay algún otro método para borrar la caché y las cookies en un muestreador o instancia específica.

¿Es necesario importar algún archivo .jar en JMeter para que esto funcione?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Basándome en el mensaje de error y en tu código, parece que tienes un error de sintaxis en tu código de Beanshell. El error es causado por las comillas curvas ( y ) que utilizaste alrededor de HTTPSampler.cookir_manager, que debería ser HTTPSampler.cookie_manager en su lugar. Además, no es necesario la línea ObjectValue(), por lo que puedes eliminarla.

    Aquí está el código de Beanshell corregido para limpiar las cookies y la caché:

    import org.apache.jmeter.protocol.http.control.CookieManager;
    
    CookieManager manager = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager").getObjectValue();
    
    manager.clear();
    sampler.getCacheManager().clear();
    

    En cuanto al problema con el procesador posterior de JSR223, puedes utilizarlo con una declaración condicional para limpiar las cookies y la caché solo para un muestreador específico. Aquí tienes un ejemplo de código:

    if (sampler.getName().equals("Nombre de tu muestreador")) {
        sampler.getCacheManager().clear();
        sampler.getCookieManager().clear();
    }
    

    Asegúrate de reemplazar Nombre de tu muestreador con el nombre real de tu muestreador.

    Por último, no es necesario importar ningún archivo .jar adicional para que estas funcionalidades funcionen en JMeter, ya que son funcionalidades incorporadas.

Comments are closed.