Cypress — это инструмент для автоматизированного тестирования веб-приложений, который работает напрямую в браузере, обеспечивая полную синхронизацию с DOM и JavaScript. Работа с методами и свойствами страниц является ключевой частью эффективного тестирования, так как позволяет взаимодействовать с элементами интерфейса, управлять навигацией и проверять состояние приложения.
Cypress предоставляет встроенные команды для управления URL и переходами между страницами:
cy.visit(url, options) — открывает
указанную страницу. Параметр options может содержать
настройки, такие как timeout, auth или
failOnStatusCode.
cy.visit('https://example.com', { timeout: 10000 });cy.reload(options) — перезагружает
текущую страницу. Может принимать объект с опцией force,
чтобы игнорировать кэш браузера.
cy.url() — возвращает объект для
проверки текущего URL. Обычно используется с методом
.should('include', '/path') для ассерций.
cy.url().should('include', '/dashboard');cy.go(direction) — выполняет
навигацию назад ('back') или вперед
('forward') в истории браузера.
Для тестирования состояния страницы важно уметь находить и взаимодействовать с элементами:
cy.get(selector, options) —
основной метод поиска элементов по CSS-селектору. Возвращает цепочку
объектов, на которых можно вызывать действия или проверки.
cy.contains(text, options) — ищет
элемент, содержащий указанный текст. Позволяет обходить ограничения
сложных селекторов.
cy.find(selector) — выполняет поиск
дочерних элементов внутри уже найденного элемента.
cy.closest(selector) — поднимается
по DOM-иерархии к ближайшему родителю, соответствующему
селектору.
Cypress позволяет симулировать действия пользователя:
cy.click(options) — клик по
элементу. Опции включают force: true для обхода ограничений
видимости и multiple: true для клика по нескольким
элементам сразу.
cy.type(text, options) — ввод
текста в поле ввода. Поддерживает имитацию специальных клавиш через
{enter}, {backspace} и другие.
cy.clear(options) — очищает
содержимое поля ввода.
cy.check() и
cy.uncheck() — управление состоянием
чекбоксов.
cy.select(value) — выбор опции в
<select> элементе по значению, индексу или
тексту.
Для проверки свойств страниц и элементов используется встроенный механизм Chai:
.should(assertion) — проверяет
состояние элемента или значения, поддерживает цепочки вызовов.
cy.get('input[name="username"]').should('be.visible').and('have.value', '');.and(assertion) — позволяет
объединять несколько проверок в одной цепочке.
.then(callback) — получает доступ к
элементу напрямую для более сложной логики проверки.
Примеры полезных ассерций:
exist — элемент присутствует в DOM.be.visible — элемент видим.contain — элемент содержит текст.have.class — элемент имеет указанный CSS-класс.have.attr — проверка атрибута элемента.Cypress предоставляет объект Cypress и
глобальный объект window для доступа к
состоянию приложения:
Cypress.config(key) — чтение и
изменение конфигурации теста.
Cypress.env(key) — работа с
переменными окружения, например для хранения токенов или URL.
cy.window() — доступ к глобальному
объекту окна. Позволяет проверять значения переменных или вызывать
функции приложения.
cy.document() — возвращает объект
document страницы для прямого взаимодействия с
DOM.
cy.title() — получение заголовка
страницы.
cy.title().should('eq', 'Главная страница');Для надежных тестов важно корректно работать с асинхронностью и временем:
cy.wait(timeOrAlias) — пауза
выполнения теста на указанное время в миллисекундах или ожидание
завершения запроса по алиасу.
cy.intercept(url, handler) —
перехват сетевых запросов, позволяет проверять ответы или подменять
их.
timeout — опция многих методов
Cypress для задания максимального времени ожидания элемента или
действия.
Cypress работает только с одной вкладкой браузера, поэтому взаимодействие с фреймами или окнами требует дополнительных подходов:
Использование cy.frameLoaded() и
cy.iframe() через плагины для работы с
<iframe>.
Управление новыми вкладками осуществляется через подмену
атрибутов target="_blank" и последующий
cy.visit().
cy.pause() — временная остановка
выполнения теста для анализа состояния.
cy.debug() — вывод состояния
элемента в консоль для пошаговой отладки.
Chrome DevTools — Cypress интегрируется с браузерными инструментами, позволяя инспектировать DOM и сетевые запросы.
Методы и свойства страниц в Cypress обеспечивают полный контроль над
приложением во время тестирования, позволяя не только эмулировать
действия пользователя, но и проверять внутреннее состояние элементов,
сетевых запросов и конфигурации. Продуманная комбинация команд
cy.get, cy.visit, cy.window и
ассерций формирует основу надежных и масштабируемых тестов.