【发布时间】:2021-05-21 06:27:59
【问题描述】:
我在输入 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 搜索吗? type({'enter'}) 也不行。
【问题讨论】:
-
this.getSelect2Input()返回什么? -
嗨,@AlapanDas 这只是一个页面对象方法 getSelect2Input() {return cy.get([element selector here])} 你可以把它想象成一个通用的 cy.get() 方法。关于您的回答:如您所见,在我的问题中,我提到我尝试了您推荐的解决方案,但没有奏效。
-
您是否使用了
delay和timeout后跟should。问题中没有提到? -
不,我只使用了没有应该的延迟,并在开始输入之前等待。为什么我需要使用应该?你的意思是如果断言失败,测试会重复输入吗?
-
.using 应该会让 cypress 重试,直到您输入的值与输入的值匹配。
标签: cypress