我的自动测试(selenium)有一个问题。
web表单中的一个输入字段在哪里:
<input data-bind="value: searchText, valueUpdate: 'afterkeydown'"></input>以及这一领域的模式:
this.searchText = ko.observable('');
this.invert = ko.observable(false);
this.defferedSearchFilter = ko.pureComputed(function() {
return {
text: this.searchText(),
invert: this.invert()
}
}, this).extend({ rateLimit: { timeout: params.throttleInterval || 500, method: 'notifyWhenChangesStop' } });按defferedSearchFilter变量中的值对列表进行筛选。自动测试通过算法检查此过滤器:
但有时(机会<1%)计算字段会触发两次,因为它看不到最后输入的符号。例如,我从selenium和chrome收集日志(截图确认它们的日志):
Selenium:2017-07-17 15:41:31,224 Fill By.CssSelector:.col3 .entityContent #linkListFastSearch_0,value to input:%95% -成功
在这一刻,selenium创建了截图。输入值- %95%
Chrome: 5624:5680:0717/154131.625:INFO:控制台(42) "FastSearch id =4已更改。新文本=“%95”,来源:http://localhost/WebUI/Scripts/uicontrols/basic/fastsearch.js (42)
过滤硒后点击项目。Selenuim:2017-07-17 15:41:34,686单击By.CssSelector: id='linkTargetCode_95‘-成功
并在节气门间隔计算后,将计算场改变为校正值。Chrome: 5624:5680:0717/154134.802:INFO:控制台(42) "FastSearch id =4已更改。新文本=“%95%”,来源:http://localhost/WebUI/Scripts/uicontrols/basic/fastsearch.js (42)
有人遇到过这样的问题吗?
发布于 2017-07-20 15:19:58
尝试使用textInput,textInput绑定将文本框()或文本区域()与viewmodel属性链接,在viewmodel属性和元素的值之间提供双向更新。
与值绑定不同,textInput为所有类型的用户输入提供了DOM的即时更新,包括自动完成、拖放和剪贴板事件。
<input data-bind="textInput: searchText" />浏览器在响应不寻常的文本输入机制(如剪切、拖动或接受自动完成建议)的事件中非常不一致。值绑定,即使有额外的选项,如valueUpdate: afterkeydown,以获得特定事件的更新,但并不涵盖所有浏览器上的所有文本输入场景。
textInput绑定是专门设计来处理各种浏览器怪癖的,即使是针对不寻常的文本输入方法,也可以提供一致和即时的模型更新。
http://knockoutjs.com/documentation/textinput-binding.html
https://stackoverflow.com/questions/45215198
复制相似问题