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 со следующими свойствами:
hashhosthostnamehreforiginpathnameportprotocolsearchtoString
При использовании аргумента 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)
})
Вывод в консоль объекта .location()
cy.location().then((loc) => {
console.log(loc)
})
Правила
Требования
-
cy.location()должно быть привязано кcy.
Проверки
-
cy.location()будет автоматически повторно выполняться, пока все присоединённые проверки не пройдут
Таймауты
-
cy.location()может выйти за пределы таймаута, ожидая выполнения добавок проверок.
Журнал команд
Проверка href объекта location
cy.location().should((loc) => {
expect(loc.href).to.include('commands/querying')
})
Вышеуказанные команды будут отображены в Журнале команд как:
При нажатии на location в журнале команд, консоль выведет следующее:
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/location