Глубокое погружение в действенные команды Cypress
Cypress — действительно интересный инструмент для тестирования. Как разработчик программного обеспечения, я хотел бы убедиться, что мой код делает то, для чего он предназначен. Тестирование — это целый набор навыков сам по себе, и требуется много времени, чтобы освоить его. Поскольку наше время не бесконечно, и нам нужно убедиться, что наш код не сломает что-то по ходу работы, нам нужен способ тестировать элементы на нашей странице, даже когда мы строим на основе вещей в будущем. Как мы можем справиться со сборкой, тестированием функций по мере продвижения и регрессионным тестированием? Введите действенные команды Cypress!
Это позволяет нам писать наши тесты для взаимодействия с нашим приложением. Это обеспечивает полную защиту нашего кода даже в будущем. Поскольку мы можем настроить наш проект для запуска этих тестов при фиксации кода в нашем репозитории, мы можем гарантировать, что наш новый код не нарушит существующий код и приложение не будет работать должным образом. Давайте погрузимся в некоторые из этих изящных команд!
Активные команды
В Cypress в нашем распоряжении есть несколько действенных команд. Они варьируются от одного щелчка до двойного щелчка, установки и снятия флажков и ввода, и это лишь некоторые из них.
click() — Щелкнуть по элементу.
Это довольно прямолинейно. Если у нас есть что-то вроде кнопки или ссылки, мы можем имитировать щелчок по этому элементу. Мы хотим сообщить Cypress, какой элемент нас интересует, а затем связать функцию щелчка с этим элементом.
✅ Correct usage cy.get('.primary-button').click(); ❌ Incorrect usage cy.click('.primary-button');
Аргументы, которые мы могли бы передать, будут position
, x or y coordinate
или options
.
// Position cy.get('.primary-button').click('topRight'); // X / Y Coordinates cy.get('.primary-button').click(10, 12); // Options(See docs below) cy.get('.primary-button').click({ altKey: true });
dblclick() — Двойной щелчок по элементу
Подобно одиночному щелчку, мы также можем выполнить двойной щелчок по элементу.
✅ Correct usage cy.get('.primary-button').dblclick(); ❌ Incorrect usage cy.dblclick('.primary-button');
Аргументы, которые мы могли бы передать, будут position
, x or y coordinate
или options
.
// Position cy.get('.primary-button').dblclick('topLeft'); // X / Y Coordinates cy.get('.primary-button').dblclick(5, 72); // Options(See docs below) cy.get('.primary-button').dblclick({ shiftKey: true });
rightclick() — Щелчок правой кнопкой мыши по элементу
Функция правого щелчка позволяет нам писать код вокруг события контекстного меню, а не самого контекстного меню (это устарело (я приложил документы, объясняющие оба ниже)).
✅ Correct usage cy.get('#primary-menu').rightclick() ❌ Incorrect usage cy.rightclick('#primary-menu');
Аргументы, которые мы могли бы передать, будут position
, x or y coordinate
или options
.
// Position cy.get('#primary-menu').rightclick('topLeft') // X / Y Coordinates cy.get('.primary-button').rightclick(5, 72); // Options(See docs below) cy.get('.primary-button').rightclick({ shiftKey: true });
contextmenu — веб-API | MDN
Устарело: эта функция больше не рекомендуется. Хотя некоторые браузеры все еще могут его поддерживать, возможно, он уже…developer.mozilla.org\
type() — Введите в элемент
Если у вас есть поля ввода и вы хотите, чтобы пользователь мог печатать внутри них, это ваша команда.
✅ Correct usage cy.get('.first-name-input').type('Text here'); ❌ Incorrect usage cy.type('Text here');
Доступные аргументы для type(): text
и options.
.
// Text cy.get('.first-name-input').type('Text here'); // Options(See docs below) cy.get('.first-name-input').type({ delay: 10 });
Если вы хотите имитировать пользователя, нажимающего клавишу во время набора текста, вы можете передать клавишу, которую хотите имитировать. Например, если бы я хотел имитировать пользователя, нажимающего клавишу Ctrl перед вводом или даже во время ввода, мы могли бы сделать это (в прикрепленных документах есть больше примеров)
cy.get('.test-input').type('{ctrl}test'); // or cy.get('.test-input').type('test {shift}things');
clear() — Очистить значение из input
или text area
Это очистит поля ввода значений
✅ Correct usage cy.get('[type="text"]').clear(); ❌ Incorrect usage cy.clear();
Доступный аргумент для этого: options.
// Options(See docs below) cy.get('[type="text"]').clear({ log: true });
check() — Отметьте флажок или радиоэлемент
Это будет имитировать щелчок внутри флажка, чтобы проверить параметр.
✅ Correct usage cy.get('[type="checkbox"]').check(); ❌ Incorrect usage cy.check('[type="checkbox"]');
Аргументы, которые мы могли бы передать, будут Value
, Values
и options.
.
// Value cy.get('[type="checkbox"]').check('First Option'); // Values (An Array of options you would want checked) cy.get('[type="checkbox"]').check([ 'First Option', 'Second Option', 'Third Option' ]); // Options(See docs below) cy.get('[type="checkbox"]').check({ log: true });
uncheck() — снять флажок
Это будет имитировать щелчок внутри флажка, чтобы снять флажок с опции.
✅ Correct usage cy.get('[type="checkbox"]').uncheck(); ❌ Incorrect usage cy.uncheck('[type="checkbox"]');
Аргументы, которые мы могли бы передать, будут Value
, Values
и options.
.
// Value (This is a String of the value you want selected) cy.get('[type="checkbox"]').uncheck('First Option'); // Values (An Array of options you would want unchecked) cy.get('[type="checkbox"]').uncheck([ 'First Option', 'Second Option', 'Third Option' ]); // Options(See docs below) cy.get('[type="checkbox"]').uncheck({ log: true });
select() — Выберите option
в пределах select
✅ Correct usage cy.get('.users-select').select('first-user-option'); ❌ Incorrect usage cy.select('Chewbacca');
Аргументы, которые мы могли бы передать, будут Value
, Values
и options.
.
// Value (This is a String of the value you want selected) cy.get('.users-select').select('Jeremy'); // Values (An Array of options you would want selected) cy.get('.users-select').select([ 'Jeremy', 'Shannon' ]); // Options(See docs below) cy.get('.users-select').select({ log: true });
Я надеюсь, что это было полезное погружение в мир активных событий в Cypress. Хотя это не все встроенные функции, я считаю эти функции наиболее полезными.
Обо мне
Привет! Я Джереми. Я пишу статьи обо всем, что связано с фронтенд-разработкой, чтобы помочь новичкам лучше понять внутреннюю работу веб-разработки. Если у вас есть какие-либо вопросы по статье, оставьте комментарий, и я свяжусь с вами в LinkedIn @JeremyGrice или на моем личном сайте VetThatCodes
Если вы нашли эту статью полезной или интересной, не стесняйтесь нажимать кнопку 👏 или, если у вас есть вопросы, оставьте комментарий ниже.
Кроме того, не забудьте проверить некоторые из моих других статей
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.