¿Cómo puedo extraer la identificación de este enlace? .localhost/survey/20?vbpCategoryId
mi código es:
cy.url().then(URL => { const current_url = URL.split('/'); cy.log(current_url[nr]); cy.wrap(current_url[nr]).as('alias');si estaba entre "/" era fácil pero en este caso es entre "/" y "?"
¡Gracias!
Si su URL siempre se formará de manera similar a como explicó, podemos usar .split() y .pop() para obtener fácilmente esta ID.
.pop() toma el último elemento de una matriz y lo devuelve.
cy.url().then((url) => { const splitUrl = url.split('/'); const ending = splitUrl.pop(); const id = ending.split('?')[0]; // code using id })He sido demasiado detallado al diseñar cada línea, pero teóricamente podría combinarlo en una sola línea como:
const id = url.split('/').pop().split('?')[0]; Incluso podríamos simplificar esto un poco, usando cy.location('pathname') .
// assuming url is something like http://localhost:1234/survey/20?vbpCategoryId cy.location('pathname').then((pathname) => { /** * `pathname` yields us just the path, excluding the query parameters and baseUrl * (in this case, `?vbpCategoryId` and `http://localhost:1234`), * so we would have a string of `/survey/20`. */ const id = pathname.split('/').pop(); });O puede usar el método .replace con una expresión regular para extraer solo el número de su URL y luego guardarlo así:
cy.url().then((URL) => { const id = +URL.replace(/[^0-9]/g, '') //Gets the id 20 and changes it to a number cy.wrap(id).as('urlId') }) cy.get('@urlId').then((id) => { //access id here }) En caso de que no desee que la id se convierta en un número, simplemente puede eliminar el + de la URL. URL.replace de esta manera:
cy.url().then((URL) => { const id = URL.replace(/[^0-9]/g, '') //Gets the id 20 cy.wrap(id).as('urlId') }) cy.get('@urlId').then((id) => { //access id here })