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

使用Cypress循环为多组输入框赋值仅第一个生效该如何解决?

问题原因

原有代码存在2个核心问题:

  1. cy.contains('div', 'Type')默认会匹配DOM中第一个符合条件的元素,每次循环都只会操作第一个块的元素,不会自动定位到第i个对应的块。
  2. 只有第一个块的输入框带有.ant-select-dropdown-menu-item类,后续块的输入框无该类,全局查找该类只能匹配到第一个输入框。
调整后代码

直接遍历所有行块,在单个行块内操作对应元素,避免全局匹配错误:

// 遍历所有.row块,逐行处理
cy.get('.row').each(($row, index) => {
  // 在当前行块内操作,不会匹配到其他行的元素
  cy.wrap($row)
    .contains('div', 'Type')
    .next()
    .find('div')
    .click()
  
  // 在当前行内查找输入框输入值
  cy.wrap($row)
    .find('iput') // 注:你提供的DOM中输入框标签为iput,若为拼写错误实际是input可自行修改
    .type(`value ${index}`)
})
调整说明
  • 用Cypress内置的.each()方法遍历元素列表,天然适配Cypress异步执行逻辑,没有普通for循环的闭包问题。
  • 所有元素查找都限制在当前行块内,不需要维护全局索引,也不依赖只有第一个元素有的特殊类,不会出现匹配串位的问题。

内容的提问来源于stack exchange,提问作者Александр

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:24:05