如何解决Cypress type()命令中缺少字符的错误?



我在输入select2元素的搜索字段时遇到了一个问题。在某些测试中,执行type()命令时缺少随机字符。我试图在开始输入之前等待(),并在每个字符之后键入超时,但没有任何帮助。我实现的绕过是将字符串作为一个整体放到字段中而不是一个字符一个字符地输入

this.getSelect2Input().invoke('val', str).trigger('change')

,但在这种情况下,测试不理解字符串已被输入,并继续等待输入。因此,解决方案是在字符串的末尾添加一个空格:

this.getSelect2Input().invoke('val', str).trigger('change').type(' ');

它工作,但不是所有的测试,因为在某些情况下,空格被视为额外的字符,无法找到字符串。对于这种情况,我找不到其他任何东西,然后输入一个空格并删除它(我知道这不是一个好的解决方案,但我能做什么?):

this.getSelect2Input().invoke('val', str).trigger('change').type(' {backspace}');

但是现在这不是很好地工作,在某些情况下,空格被打印但不被删除。有没有人建议如何在设置字段的值后启动select2搜索?键入({'enter'})不能正常工作。

如果this.getSelect2Input()转换为cy.get('locator'),您可以使用type()添加延迟,也可以添加.should以确保您键入的预期值正确。

// Delay each keypress by 0.1 sec
this.getSelect2Input().type('slow.typing@email.com', {
delay: 100
}).should('have.value', 'slow.typing@email.com')

或者,也可以添加timeout:

// Add a timeout of 10 seconds
this.getSelect2Input().type('slow.typing@email.com', {
timeout: 10000
}).should('have.value', 'slow.typing@email.com')

最新更新