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.

Nuestra URL base redirecciona a otra URL, la cual podemos ver en los registros, y esta contiene una variable que necesitamos almacenar y transmitir en solicitudes subsecuentes.

Usando karate-UI

   Dado driver 'http://localhost:8080/auth/realms/auth?scope=openid&state=eferov08J37HlzbycjxHGs4.xzyoGFvM3QQ.test&response<em>type=code&client</em>id=hetg&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fauth%2Frealms%2Fendpoint'
    * pantallaCompleta()
    Y demora(2000)
    Y ingresarTexto('#username', 'username')
    Y ingresarTexto('#password', 'password')
    Cuando presionar().hacerClic("#kc-login")
    Entonces esperarPorUrl('http://localhost:8080/auth/realms/endpoint')

Esta URL contiene un valor que queremos extraer. waitForUrl espera a que esta URL llegue y una vez que se recibe esta URL, se debe proceder más. ¿Es posible almacenar esto en alguna variable de alguna manera? Ya que todas las demos que vi mencionan la entrada o se puede hacer clic en un botón en esta URL, ¿qué pasa con la extracción de un valor de la URL? ¿Cómo almacenar esta URL para poder extraer el valor?

http://localhost:8080/auth/realms/endpoint?state=abbv&code=t6002231-3031-459f-b4c4-2e8a25223550.64f22bbc-6c28-49e4-bc2c-ca0ed40060de.36aee969-73e3-4bc5-bc5e-a4b68

Tags:  

Answer

  1. Avatar for davy.ai

    Para extraer el valor de la URL en karate-UI, puedes utilizar el método ‘getUrl()’ que recupera la URL actual y la guarda en una variable. Luego, puedes utilizar código Java para extraer el valor requerido utilizando expresiones regulares u otras funciones de manipulación de cadenas.

    Aquí tienes un ejemplo de cómo puedes modificar el escenario dado para almacenar la URL y extraer un valor de ella:

    Dado que el controlador es 'http://localhost:8080/auth/realms/auth?scope=openid&state=eferov08J37HlzbycjxHGs4.xzyoGFvM3QQ.test&response_type=code&client_id=hetg&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fauth%2Frealms%2Fendpoint'
      * pantallaCompleta()
      Y retraso(2000)
      Y escribirEnCampo('#username', 'nombreUsuario')
      Y escribirEnCampo('#password', 'contraseña')
      Cuando enviar().hacerClicEn("#kc-login")
      Entonces esperarPorUrl('http://localhost:8080/auth/realms/endpoint')
      Y def url = driver.getUrl()  // almacenar la URL en la variable 'url'
      Y def regex = /code=([^&]+)/  // regex para extraer el valor 'code' de la URL
      Y def coincidencia = (url =~ regex)  // aplicar regex en la URL para obtener una coincidencia
      Y def valorCode = coincidencia[0][1]  // extraer el valor 'code' de la coincidencia
    

    En el escenario anterior, primero usamos el método ‘getUrl()’ para recuperar la URL actual y almacenarla en la variable ‘url’. Luego, definimos una expresión regular para extraer el valor ‘code’ de la URL usando la expresión ‘/code=([^&]+)/’. Luego aplicamos esta expresión regular en la URL usando el operador ‘=~’ y recuperamos la coincidencia utilizando el índice ‘[0][1]’. Finalmente, almacenamos el valor ‘code’ en la variable ‘valorCode’, que luego se puede utilizar en el escenario según sea necesario.

Comments are closed.