我在输入 select2 元素的搜索字段时遇到问题。在某些测试中,执行 type() 命令时随机字符丢失。我尝试在开始输入之前等待(),并在每个字符后输入超时,但没有任何帮助。因此,我实现的绕过是将字符串作为一个整体放入字段中,而不是逐个字符地输入它:
this.getSelect2Input().invoke('val', str).trigger('change')
Run Code Online (Sandbox Code Playgroud)
但在这种情况下测试并不知道字符串已经被输入并继续等待输入。所以解决方案是在字符串末尾添加一个空格:
this.getSelect2Input().invoke('val', str).trigger('change').type(' ');
Run Code Online (Sandbox Code Playgroud)
它有效,但不适用于所有测试,因为在某些情况下,空格被视为附加字符并且无法找到字符串。对于这种情况,我找不到其他任何东西,然后输入空格并将其删除(我知道这不是一个好的解决方案,但我能做什么?):
this.getSelect2Input().invoke('val', str).trigger('change').type(' {backspace}');
Run Code Online (Sandbox Code Playgroud)
但现在这不起作用,在某些情况下,空间被打印但没有被删除。有人可以建议如何在设置字段的值后启动 select2 搜索吗?type({'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')
Run Code Online (Sandbox Code Playgroud)
或者,您还可以添加timeout
:
// Add a timeout of 10 seconds
this.getSelect2Input().type('slow.typing@email.com', {
timeout: 10000
}).should('have.value', 'slow.typing@email.com')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3889 次 |
最近记录: |