使用Cypress操作数据网格筛选行时无法输入文本St的问题求助
问题原因分析
- 首先你的Cypress代码存在语法错误:
eq(2)后没有用.链式调用后续方法,相当于选中目标元素后没有触发后续的点击、输入逻辑,所有操作都直接作用到了当前页面默认聚焦的元素上,这是最直接的原因。 - 你定位的
.dx-editor-with-menu是DevExtreme数据网格编辑器的外层容器,不是实际可输入的原生input元素,直接向外层容器输入内容不会生效。 - 关于你提到的元素不可见的疑问:如果元素确实处于不可见状态,
type方法默认会抛出元素不可交互的错误,你现在没有报错大概率是操作作用到了其他可交互的元素上,和目标元素不可见关联度不高。 - 部分DevExtreme网格过滤行自带输入校验、防抖逻辑,若没有激活编辑态直接输入也会出现内容无法写入的情况。
修复后的代码示例
// 先定位到过滤行对应列的实际input元素 cy.get('div#grid .dx-datagrid-filter-row .dx-editor-with-menu') .eq(2) // 找到内嵌的原生input节点 .find('input') // 先激活输入框,确保进入编辑态 .click({ force: true }) // 输入时加force跳过可交互性校验,避免框架自定义样式导致的校验不通过 .type('St', { force: true });
额外调试方案
如果修改后仍然无法输入,可以在type前加一行debug()打印元素状态,确认选中的是正确的输入元素:
// 前面的定位逻辑保持不变 .find('input') .debug() .click({force: true}) .type('St', {force: true})
内容的提问来源于stack exchange,提问作者Tomasito
相关产品推荐
相关产品推荐

