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

Cypress测试中如何在textarea输入带换行的JSON内容?

Cypress测试:如何在textarea中输入带换行的JSON内容

我在Cypress测试中遇到一个问题,需要在textarea中输入如下带换行的JSON内容:

{
"collapsible": true
}

我尝试了多种写法,比如:

'{{} ' + '\n' + '"collapsible": true' + '\n' + ' {}}'
'{{} {enter} "collapsible": true {enter} {}}'
'{{}' + {enter} + ' "collapsible": true' + {enter} + '{}}'
...

但都没有成功,最终总是得到单行的结果:

{ "collapsible": true }

更新:结果截图显示输入后的内容仍为单行,未保留预期的换行格式。

解决方案

方法1:用type命令结合{enter}转义符

确保正确使用Cypress的特殊转义符,可拆分输入步骤或用模板字符串:

// 拆分输入步骤
cy.get('textarea')
  .type('{{}')  // 转义输入左大括号
  .type('{enter}')  // 模拟回车换行
  .type('"collapsible": true')
  .type('{enter}')
  .type('}');

// 或用模板字符串一次性输入(注意转义大括号)
cy.get('textarea').type(`{{}
"collapsible": true
}`);

方法2:直接设置textarea的value属性(更可靠)

如果组件有自动格式化逻辑,type命令可能失效,直接操作DOM设置值并触发输入事件:

const targetJson = `{
"collapsible": true
}`;
cy.get('textarea')
  .invoke('val', targetJson)
  .trigger('input');  // 触发输入事件以更新页面状态

失败原因说明

  • 之前的写法错误地将{enter}当作变量拼接,它是Cypresstype命令的专用转义符,需直接写入输入字符串
  • 部分textarea组件自带自动格式化、防抖处理,会将输入的换行自动合并,此时直接设置value属性更有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:54:25