Spec-Zone.ru › Cypress

location

Получите глобальный window.location объект страницы, которая в данный момент активна.

Синтаксис

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

Использование

Правильное использование

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

Аргументы

key (Строка)

Ключ в объекте location. Возвращает это значение вместо всего объекта location.

options (Объект)

Передайте объект options, чтобы изменить стандартное поведение cy.location().

Опция По умолчанию Описание
log true Отображает команду в Журнале команд
timeout defaultCommandTimeout Время ожидания cy.location() для разрешения перед выходом за пределы таймаута

Возвращаемое значение

cy.location() возвращает объект location со следующими свойствами:

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

При использовании аргумента key:

  • cy.location() возвращает значение свойства location в виде строки

Примеры

Без аргументов

Выполнить проверки по всем свойствам объекта location

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'
  )
})

Проверить location на наличие параметров запроса и пути

Мы можем вернуть объект location внутри команды .should() и работать с ним напрямую.

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

Ключ

Проверить, что перенаправление работает

Получить только pathname и добавить проверку.

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

Примечания

Нативный объект Location

Нет необходимости использовать window.location

Cypress автоматически нормализует команду cy.location() и удаляет лишние значения и свойства, найденные в window.location. Кроме того, возвращаемый объектный литерал cy.location() — это базовый объектный литерал, а не специальный объект window.location.

При изменении свойств реального объекта window.location браузер вынужден перейти на другую страницу. В Cypress возвращаемый объект является обычным, поэтому изменение его свойств не повлияет на навигацию.

Вывод в консоль объекта window.location

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

Вывод в консоль объекта .location()

cy.location().then((loc) => {
  console.log(loc)
})
Console Log of Cypress location command

Правила

Требования

  • cy.location() должно быть привязано к cy .

Проверки

  • cy.location() будет автоматически повторно выполняться, пока все присоединённые проверки не пройдут

Таймауты

  • cy.location() может выйти за пределы таймаута, ожидая выполнения добавок проверок.

Журнал команд

Проверка href объекта location

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

Вышеуказанные команды будут отображены в Журнале команд как:

Command Log of Cypress location command

При нажатии на location в журнале команд, консоль выведет следующее:

Console Log of Cypress location command

См. также

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

© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/location

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API