使用Cypress循环为多组输入框赋值仅第一个生效该如何解决?
问题原因
原有代码存在2个核心问题:
cy.contains('div', 'Type')默认会匹配DOM中第一个符合条件的元素,每次循环都只会操作第一个块的元素,不会自动定位到第i个对应的块。- 只有第一个块的输入框带有
.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,提问作者Александр
相关产品推荐
相关产品推荐

