Obtenga el global window.location objeto de la página que está actualmente activa.

Sintaxis

cy.location()
cy.location(key)
cy.location(options)
cy.location(key, options)

Uso

Uso Correcto

cy.location() // Get location object
cy.location('host') // Get the host of the location object
cy.location('port') // Get the port of the location object

Argumentos

llave (Cuerda)

Una clave en el objeto de ubicación. Devuelve este valor en lugar del objeto de ubicación completo.

opciones (Objeto)

Pase un objeto de opciones para cambiar el comportamiento predeterminado de cy.location().

Opción Defecto Descripción
log true Muestra el comando en el Registro de comandos
timeout defaultCommandTimeout Es hora de esperar cy.location() para resolver antes de que se agote el tiempo

Rendimientos

cy.location() produce el objeto de ubicación con las siguientes propiedades:

  • hash
  • host
  • hostname
  • href
  • origin
  • pathname
  • port
  • protocol
  • search
  • toString

Cuando se le da un key argumento:

  • cy.location() produce el valor de la propiedad de ubicación como una cadena

Ejemplos de

Sin argumentos

Hacer afirmaciones sobre cada propiedad de la ubicación

cy.visit('http://localhost:8000/app/index.html?q=dan#/users/123/edit')

cy.location().should((loc) => {
  expect(loc.hash).to.eq('#/users/123/edit')
  expect(loc.host).to.eq('localhost:8000')
  expect(loc.hostname).to.eq('localhost')
  expect(loc.href).to.eq(
    'http://localhost:8000/app/index.html?q=dan#/users/123/edit'
  )
  expect(loc.origin).to.eq('http://localhost:8000')
  expect(loc.pathname).to.eq('/app/index.html')
  expect(loc.port).to.eq('8000')
  expect(loc.protocol).to.eq('http:')
  expect(loc.search).to.eq('?q=dan')
  expect(loc.toString()).to.eq(
    'http://localhost:8000/app/index.html?q=brian#/users/123/edit'
  )
})

Verifique la ubicación de los parámetros de consulta y el nombre de la ruta

Podemos ceder el objeto de ubicación dentro de un .should() comando y trabajar con él directamente.

cy.get('#search').type('niklas{enter}')
cy.location().should((loc) => {
  expect(loc.search).to.eq('?search=niklas')
  expect(loc.pathname).to.eq('/users')
})

Llave

Afirmar que una redirección funciona

Agarra solo el pathname y agregue una afirmación.

cy.visit('http://localhost:3000/admin')
cy.location('pathname').should('eq', '/login')

Notas

Ubicación nativa

No es necesario usar window.location

Cypress normaliza automáticamente el cy.location() comando y elimina los valores y propiedades extraños que se encuentran en window.location. Además, el objeto literal producido por cy.location() es un literal de objeto básico, no el especial window.location objeto.

Al cambiar propiedades en el real window.location , obliga al navegador a navegar fuera. En Cypress, el objeto generado es un objeto simple, por lo que cambiar sus propiedades no tendrá ningún efecto en la navegación.

Salida de consola de window.location

cy.window().then((win) => {
  console.log(win.location)
})

Console.log de window.location

Salida de consola de .location()

cy.location().then((loc) => {
  console.log(loc)
})

Log de la consola del comando de ubicación de Cypress

Normas

Requisitos

  • cy.location() requiere estar encadenado fuera de cy .

Afirmaciones

  • cy.location() automáticamente rever hasta que todas las afirmaciones encadenadas hayan pasado

Tiempos de espera

  • cy.location() puede agotar el tiempo de espera para que se aprueben las afirmaciones que ha agregado.

Registro de comandos

Afirmar en el href de la ubicación

cy.location().should((loc) => {
  expect(loc.href).to.include('commands/querying')
})

Los comandos anteriores se mostrarán en el Registro de comandos como:

Comando Log del comando de ubicación de Cypress

Al hacer clic en location dentro del registro de comandos, la consola genera lo siguiente:

Log de la consola del comando de ubicación de Cypress

Ver también

  • cy.hash()
  • cy.url()