gpt4 book ai didi

javascript - 延迟计算看不到输入字段中最后输入的符号

转载 作者:行者123 更新时间:2023-12-03 03:49:48 25 4
gpt4 key购买 nike

我的自动测试(selenium)有一个问题。

网络表单中的一个输入字段在哪里:

<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' } });

根据 deferedSearchFilter 变量中的值,对列表进行过滤。自动测试通过算法检查此过滤器:

  1. 在输入字段中输入值 %95%
  2. 等待过滤
  3. 通过点击项目来检查列表中的项目,因为有些信息隐藏在项目中。

但有时(机会 <1%)计算字段会触发两次,因为它看不到最后输入的符号。例如,我从 selenium 和 chrome 收集日志(截图证实了它们):

Selenium :[2017-07-17 15:41:31,224](调试)填充By.CssSelector:.col3 .entityContent #linkListFastSearch_0,输入值:%95% - 成功

此时,selenium 创建屏幕截图。输入值 - %95%

Chrome 物:[5624:5680:0717/154131.625:INFO:CONSOLE(42)]“FastSearch id = 4 已更改。新文本 =“%95””,来源:http://localhost/WebUI/Scripts/uicontrols/basic/fastsearch.js ( 42)

过滤后, Selenium 会点击项目。 Selenium :[2017-07-17 15:41:34,686](调试)点击By.CssSelector:[id='linkTargetCode_95'] - 成功

节流间隔计算字段更改为正确值后。 Chrome :[5624:5680:0717/154134.802:INFO:CONSOLE(42)]“FastSearch id = 4 已更改。新文本 =“%95%”,来源:http://localhost/WebUI/Scripts/uicontrols/basic/fastsearch.js (42)

有人遇到过这样的问题吗?

最佳答案

尝试使用textInput,textInput绑定(bind)将文本框()或文本区域()与viewmodel属性链接起来,提供viewmodel属性和元素值之间的双向更新。

与值绑定(bind)不同,textInput 为所有类型的用户输入提供来自 DOM 的即时更新,包括自动完成、拖放和剪贴板事件。

<input data-bind="textInput: searchText" />

浏览器在响应异常文本输入机制(例如剪切、拖动或接受自动完成建议)时触发的事件高度不一致。即使使用 valueUpdate: afterkeydown 等额外选项来获取特定事件的更新,值绑定(bind)也无法涵盖所有​​浏览器上的所有文本输入场景。

textInput 绑定(bind)专门设计用于处理各种浏览器怪癖,即使响应不寻常的文本输入方法,也能提供一致且即时的模型更新。

http://knockoutjs.com/documentation/textinput-binding.html

关于javascript - 延迟计算看不到输入字段中最后输入的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com