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

Cypress 13.06无法提取Fixture文件数据报错求助

问题:Cypress无法读取Fixture数据并报错cy.xpath is not a function

环境信息

  • Cypress版本:13.06

Fixture文件内容(userData.json)

{
  "userName": "John"
}

测试代码片段

测试套件及前置钩子

describe("Cypress Test", () => {
  beforeEach(function () {
    cy.fixture("userData").then((userData) => {
      this.data = userData;
      cy.visit("WEBSITE");
    });
  });

测试用例

it("Handling FIXTURE", () => {
   cy.get('input[name="name"]').type(this.data.userName);
  });

报错信息

TypeError
cy.xpath is not a function
cypress/e2e/dropDownFeatures.cy.js:86:8
  84 | 
  85 |   it("Handling FIXTURE", () => {
> 86 |     cy.get('input[name="name"]').type(this.data.userName);
     |        ^
  87 |   });
  88 | });
  89 | 

问题分析与解决

1. 修复this.data无法访问的问题

测试用例使用箭头函数会导致this不绑定当前测试上下文,因此无法获取beforeEach中赋值的this.data。需要把测试用例的箭头函数改成普通函数:

it("Handling FIXTURE", function () { // 替换箭头函数为普通函数
  cy.get('input[name="name"]').type(this.data.userName);
});

2. 解决cy.xpath is not a function报错

报错提示cy.xpath不存在,但当前代码片段里用的是cy.get,说明你的测试文件中其他位置可能使用了cy.xpath但未安装对应插件:

  • 如果确实需要使用xpath,先安装依赖:
    npm install -D cypress-xpath
    
  • 然后在cypress/support/e2e.js中导入插件:
    require('cypress-xpath')
    
  • 如果不需要xpath,检查测试文件中是否有多余的cy.xpath调用,直接删除即可。

3. 额外验证点

  • 确认userData.json放在默认的cypress/fixtures文件夹下,路径无误;
  • 可以在beforeEach中添加console.log(this.data),验证Fixture数据是否成功加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:09:56