该网址没有页码参数。每页都有一个下一个按钮和值。没有长度。每个页面都有一个值为 10 的值。我需要断言并使总值等于给定值。
“NEXT”的元素如下: 下一页 >
“ul”的元素如下: 类=“usa-pagination__list js-pager__items”
“第 1 页”的元素如下所示: 1
我需要在这里使用 cypress 和 javascript。
下面累了: describe.only('总数', () => {
it('Total count of items', () => {
cy.visit('/');
let totalItemsCount =0;
function countItemsOnPage() {
cy.get('a.usa-pagination__button')
.then($anchors => {
totalItemsCount+=$anchors.length;
cy.get('.usa-pagination__link-text')
.then($linkText =>{
if($linkText.is(':enabled')) {
cy.wrap($linkText).click();
cy.wait(500);
countItemsOnPage();
} else {
cy.log('${totalItemsCount}');
}
})
})
}
countItemsOnPage();
})
})
您已设置测试装置/条件,以便各个页面上有 568 个项目。每页有 10 个项目,点击“下一页”按钮即可进入下一页。
编写这个测试的方法是这样的:
cy.visit('my-page')
// assert there are 56 pages of 10 items each
Cypress._.times(56, () => {
cy.get('a.usa-pagination__button').should('have.length', 10)
cy.get('.usa-pagination__link-text').click() // next page
})
// assert the last page has 8 items
cy.get('a.usa-pagination__button').should('have.length', 8)
// assert there are no more pages
cy.get('.usa-pagination__link-text').should('be.disabled')
一旦掌握了设置测试条件的基本测试概念,一切就变得非常简单。您可以使用
cy.intercept()
命令并使用夹具来完成此操作。
您应该在每个页面上做的另一件事是检查页码或指示新页面已加载的内容(也许检查第一个链接内容)。