Cypress использует регулярное выражение для получения элементов с соответствующим текстом в id - PullRequest
1 голос
/ 21 апреля 2020

У меня есть несколько элементов div с идентификатором features-##### и features-#####, где # является динамической c цифрой.

Как мне заставить Cypress найти все элементы с соответствующей частью Идентификатор features-, а затем нажмите на первую или вторую в программном c порядке?

Это то, что я сделал до сих пор, но я не могу понять, как использовать h regex для извлечения затем все элементы, которые я сделал, обрабатывают их программно.

  describe('builder features component', () => {
    it('should allow the user to select a features component', () => {
      cy.get(el).should('div.id', /^features-\w+/).first().click();
    });
  });

Ответы [ 3 ]

3 голосов
/ 21 апреля 2020

Cypress предлагает использовать data- атрибуты для выбора элементов. Например, если вы добавите data-cy="builder-feature" ко всем своим функциям, вам не придется заботиться о регулярных выражениях, которые просто замедлят ваши тесты.

cy.get('[data-cy="builder-feature"]').first().click()

См. Рекомендации .

2 голосов
/ 21 апреля 2020

Rich Churcher прав, упомянутый им подход должен быть вашим первым выбором. Но если у вас нет контроля над приложением и вы не можете добавить атрибуты data-cy, вы можете использовать синтаксис селектора css для достижения этой цели.

const featuresSelector = '[id^="features-"]'; 

Это позволит выбрать любой элемент с идентификатором, который начинается с ... См. Хорошее объяснение на Как выбрать все элементы, идентификатор которых начинается и заканчивается указанными c строками?

И тогда вы можете использовать этот селектор вот так:

cy.get(featuresSelector).first().click(); // click the 1st element in the collection
cy.get(featuresSelector).eq(1).click(); // click the second element (index starts at 0)
cy.get(featuresSelector).eq(-1).click(); // click the last element
cy.get(featuresSelector).each((element, index, collection) => {
    // or event loop through the entire collection
})
0 голосов
/ 21 апреля 2020

Использует функцию contains (). Функция может получать регулярное выражение в качестве параметра

cy.contains(/^features-\w+/).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...