我开始学习赛普拉斯了.我有一个4行表(有一类数据表).我可以通过这种方式验证行数:
cy.get('.datatable').find('tr').each(function(row, i){
expect(i).to.be.lessThan(4)
})
Run Code Online (Sandbox Code Playgroud)
这是好的,但似乎尴尬,因为我只是想算的长度和并不真正需要访问的东西在排,我想这是更快地做一件事比做4两件事.
如果我记录选择(不知道还有什么叫它):
cy.log(cy.get('.datatable').find('tr'))
Run Code Online (Sandbox Code Playgroud)
它出来了[object Object],我不太确定如何解构它,这告诉我,我正在考虑这一切都是错的.
如果我尝试:
expect(cy.get('.datatable').find('tr')).to.have.lengthOf(4)
Run Code Online (Sandbox Code Playgroud)
我明白了 AssertionError: expected { Object (chainerId, firstCall) } to have a property 'length'
如果我尝试:
expect(Cypress.$('.datatable > tr')).to.have.lengthOf(4)
Run Code Online (Sandbox Code Playgroud)
我得到AssertionError: expected { Object (length, prevObject, ...) } to have a length of 4 but got 0的至少它有一个长度在这里?
如果我记录那种选择方法,我会得到Object{4}.我不知道从哪里开始.这似乎是一个非常普遍的事情要处理.
Kat*_*rne 54
找到一个解决方案,这可以检查项目的数量:
cy.get('.datatable').find('tr').should('have.length', 4)
Run Code Online (Sandbox Code Playgroud)
这不适Cypress.$()用于符号方法.
参考:https://docs.cypress.io/guides/references/assertions.html#Length
Yuc*_*uci 25
您还可以通过其属性获得所选项目的长度,例如:
cy.get('.datatable').find('tr').its('length').should('eq', 4)
cy.get('.datatable').find('tr').its('length').should('be.gte', 4)
Run Code Online (Sandbox Code Playgroud)
此外 should('have.length', 4)
0x4*_*672 11
一种选择是使用“have.length”...
cy.get('.datatable tr').should('have.length', 4)
Run Code Online (Sandbox Code Playgroud)
...另一种选择是使用 should
cy.get('.datatable tr').should(($tr) => {
expect($tr).to.have.length(4)
})
Run Code Online (Sandbox Code Playgroud)
...或然后(同步查询)
cy.get('.datatable').then(($table) => {
// synchronously query to find length of elements
expect($table.find('td').length).to.equal(4)
})
Run Code Online (Sandbox Code Playgroud)
在cypress API docs .should()部分中,使用箭头功能:
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')
})
Run Code Online (Sandbox Code Playgroud)
这种方法将使您可以使用Chai BDD表示法,并在元素列表中声明一件事。
小智 5
如果您想更加灵活并获得动态效果,请使用此功能。
cy.get('.listings-grid')
.find('.listing')
.then(listing => {
const listingCount = Cypress.$(listing).length;
expect(listing).to.have.length(listingCount);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26300 次 |
| 最近记录: |