You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cypress JS做车型筛选分页测试时无法跳转页面问题求助

代码问题分析
  • 核心问题:混用async/await与Cypress命令机制
    Cypress的所有操作命令都是基于内部命令队列执行,不属于标准ES6 Promise,使用await不会等待Cypress命令实际执行完成,会导致执行顺序完全错乱,页码点击、页面跳转、元素获取的逻辑完全不同步,自然无法正常切换页面。
  • 别名缓存问题
    你在首次获取页码列表时用as("pages")设置了别名,切换页面后DOM刷新,该别名指向的还是旧页面中已经被销毁的页码元素,后续点击操作命中的是无效DOM,不会触发页面跳转。
  • each方法不支持异步回调
    Cypress的each()遍历方法不支持传入async异步回调,回调内的异步逻辑无法按预期执行,且你写的return false也无法正常终止遍历流程。
  • 需求逻辑不匹配
    你的测试目标是校验所有分页的所有条目都仅包含目标车型,当前代码逻辑是找到包含目标车型的条目就终止遍历,完全不符合测试预期。
修正后可运行代码
function findItem(value) {
  // 先获取总页数,不要缓存页码元素
  cy.get("li.page-item:not(.page-pre):not(.page-next)").then(pageItems => {
    const totalPages = pageItems.length;
    // 遍历所有页码
    for (let pageIndex = 0; pageIndex < totalPages; pageIndex++) {
      // 每次点击页码前重新获取最新的页码元素,避免缓存问题
      cy.get("li.page-item:not(.page-pre):not(.page-next)").eq(pageIndex).click();
      // 等待页面跳转后表格加载完成,可根据实际情况替换为你的页面加载判断逻辑
      cy.get("table tr > td:nth-child(5) p").should('exist');
      // 校验当前页所有条目都包含目标车型
      cy.get('.css-1b4k5p > .chakra-text.css-0').each($el => {
        expect($el.text().toUpperCase()).to.include(value.toUpperCase());
      })
    }
  })
}

// 调用测试
findItem("AUDI")

内容的提问来源于stack exchange,提问作者Luna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:24:02