В Cypress как подсчитать выбор предметов и получить длину?

Я начинаю изучать Cypress. У меня есть таблица 4 строк (с классом datatable). Я могу проверить количество строк следующим образом:

cy.get('.datatable').find('tr').each(function(row, i){
        expect(i).to.be.lessThan(4)
})

это нормально, но это кажется неудобным, так как я просто хочу подсчитать длину и на самом деле не нужно получать доступ к материалу в строках, и я предполагаю, что быстрее сделать одну вещь, чем сделать 4 вещи.

если я регистрирую выбор (не уверен, как еще его назвать):

cy.log(cy.get('.datatable').find('tr'))

выходит как [object Object] и я не совсем уверен как разобрать, что говорит мне, что я думаю об этом все неправильно.

если я попробую:

expect(cy.get('.datatable').find('tr')).to.have.lengthOf(4)

Я AssertionError: expected { Object (chainerId, firstCall) } to have a property 'length'

если я попробую:

    expect(Cypress.$('.datatable > tr')).to.have.lengthOf(4)

Я AssertionError: expected { Object (length, prevObject, ...) } to have a length of 4 but got 0 так, по крайней мере, он имеет здесь?

если я регистрирую этот метод выбора, я получаю Object{4}. Я не знаю, куда идти дальше. Кажется, это было бы очень распространенным явлением.

3 ответов


найдено решение, это работает, чтобы проверить количество элементов:

cy.get('.datatable').find('tr').should('have.length', 4)

это не работает с Cypress.$() нотация.

ссылка:https://docs.cypress.io/guides/references/assertions.html#Length


С документы API cypress .should () section, С помощью функции стрелочку:

cy.get('.datatable').find('tr').should(($listOfElements) => {
   expect($listOfElements).to.have.length(4)
   // any other assertions, for example the below one
   // expect($listOfElements).to.have.any.keys('key1', 'key2')
})

такой подход позволит вам использовать Chai BDD обозначения и утверждать более одной вещи в вашем списке элементов.


вы также можете получить длину выбор элементов через своего имущества, например:

cy.get('.datatable').find('tr').its('length').should('eq', 4)
cy.get('.datatable').find('tr').its('length').should('be.gte', 4)

кроме should('have.length', 4)