2017-07-20 33 views
0

我的自動測試(硒)有一個問題。推遲計算在輸入字段中看不到最後輸入的符號

凡在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. 在輸入字段
  2. 等待過濾通過點擊物品,因爲有些信息牆根到項目中輸入值%95%在列表
  3. 檢查項目。

但有時(機會< 1%)計算字段激發兩次,因爲它看不到最後輸入的符號。例如我收集從硒和鉻日誌(截圖確認他們的):

硒: [2017年7月17日15:41:31224](DEBUG)填充By.CssSelector:.col3 .entityContent#linkListFastSearch_0,值輸入:%95% - 成功

在這一刻硒創建屏幕截圖。值在輸入 - %95%

鉻: [5624:5680:0717/154131.625:INFO:控制檯(42)] 「FASTSEARCH ID = 4變更新文本=」 %95「」,來源:http://localhost/WebUI/Scripts/uicontrols/basic/fastsearch.js(42)

過濾後,硒點擊物品。 Selenuim: [DEBUG]點擊By.CssSelector:[id ='linkTargetCode_95'] - 成功

並且節流間隔計算後的字段更改爲正確的值。鉻: [5624:5680:0717/154134.802:INFO:控制檯(42)] 「FASTSEARCH ID = 4變更新文本=」 %95% 「」,源:http://localhost/WebUI/Scripts/uicontrols/basic/fastsearch.js(42)

有沒有人遇到過這樣的問題?

回答

1

嘗試使用textInput,textInput綁定將文本框()或文本區域()與viewmodel屬性鏈接起來,從而在viewmodel屬性和元素的值之間提供雙向更新。

與值綁定不同,textInput爲來自DOM的即時更新提供所有類型的用戶輸入,包括自動完成,拖放和剪貼板事件。

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

瀏覽器是在火災響應不尋常的文本輸入機制,如切割,拖,或接受自動完成建議的事件高度不一致。值綁定,即使有額外的選項,如valueUpdate:afterkeydown來獲取特定事件的更新,也不包括所有瀏覽器上的所有文本輸入場景。

textInput綁定專門設計用於處理各種各樣的瀏覽器怪癖,即使在響應不尋常的文本輸入方法時也能提供一致的即時模型更新。

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

+0

太棒了!這對我來說工作很好。非常感謝你的配合! –