如何在Cypress中基于data属性检查元素的排列顺序
验证元素顺序的Cypress测试方案
针对你需要验证#container下子元素data-test属性顺序的需求,这里提供两种可行的测试写法:
方法一:批量断言属性顺序
通过提取所有目标元素的data-test属性值,和预期数组做整体对比,适合快速验证整体顺序:
it('Should have the specific order of elements', () => { // 定义预期的元素顺序数组 const expectedOrder = ['black-leather', 'emerald-stone', 'diamond-blade', 'fire-sword']; cy.get('#container [data-test]') .should($elements => { // 提取每个元素的data-test属性,转换为数组 const actualOrder = $elements .map((_, element) => Cypress.$(element).attr('data-test')) .get(); // 断言实际顺序与预期完全匹配 expect(actualOrder).to.deep.equal(expectedOrder); }); });
方法二:逐个验证元素位置
如果需要更细粒度的检查,可针对每个位置的元素单独断言属性值:
it('Should have the specific order of elements', () => { cy.get('#container').within(() => { // 验证第1个元素的data-test值 cy.get('[data-test]').eq(0).should('have.attr', 'data-test', 'black-leather'); // 验证第2个元素的data-test值 cy.get('[data-test]').eq(1).should('have.attr', 'data-test', 'emerald-stone'); // 验证第3个元素的data-test值 cy.get('[data-test]').eq(2).should('have.attr', 'data-test', 'diamond-blade'); // 验证第4个元素的data-test值 cy.get('[data-test]').eq(3).should('have.attr', 'data-test', 'fire-sword'); }); });
说明
当前你提供的页面元素顺序和预期不符,运行测试会直接失败。调整页面中div的顺序为预期的black-leather→emerald-stone→diamond-blade→fire-sword后,测试即可通过。
内容的提问来源于stack exchange,提问作者Twirlman
相关产品推荐
相关产品推荐

