2017-04-18 53 views
2

我試圖在input字段中替換文字。鑑於原始文本foo,我試圖用bar替換它。量角器:等待文字爲可變

在大多數情況下,正常工作,但間歇我看到一個問題,結果可能是foobarfooarfoor甚至foo。這似乎意味着,當我的sendkeys()開始執行時,文本有時處於不可變狀態,然後在執行sendkeys()時變爲可變部分。

我試過使用clear()清除sendkeys()之前的輸入,但行爲不會改變,clear()根本無法在某些情況下刪除原始文本。我也試着等待原始文本出現在input以及等待input變得可點擊,然後在致電sendkeys()之前單擊它。再次,這些不會改變原來的行爲。

這裏是我的input

<input qva-select="" qv-enter="toggleEditMode()" type="text" maxlength="255" class="lui-input details-input ng-pristine ng-valid ng-not-empty ng-valid-maxlength ng-touched" ng-model="appModel.qTitle"> == $0 

原始量角器代碼很乾脆:

titleInput: this.element(this.by.model('appModel.qTitle')) 

titleInput.sendKeys('bar') 

這裏就是我現在有一堆等待條件和其他試圖修復:

browser.wait(EC.textToBePresentInElementValue(titleInput, 'foo'), 60000) 
browser.wait(EC.elementToBeClickable(titleInput), 60000) 
titleInput.click() 
titleInput.sendKeys(protractor.Key.CONTROL, 'a', protractor.Key.NULL, 'bar', protractor.Key.ENTER) 

有沒有其他方法可以確保文本在嘗試r之前是可變的放置它?

+0

不,它不會出錯,它會繼續執行,就好像它成功了一樣。 –

+0

我認爲你的問題的根本原因是'輸入'的qv-enter =「toggleEditMode()」屬性。我一直未能在網上找到太多內容(似乎與Qlik View有某種關係),但名稱暗示它負責阻止任何輸入,直到滿足某些條件。由於這是另一個框架,量角器無法知道它應該等待這個腳本完成。看來自定義等待是唯一的出路。如果你可以提供''toggleEditMode'函數的內部知識,那麼肯定會有幫助。 –

+0

該屬性僅處理在輸入中輸入「return」字符的情況。然後它將頁面切換回「只讀」。我不相信它在這裏發生的事情中發揮作用。 –

回答

3

我覺得你可以讓事情變得更可靠由具有定製等待會反覆發出.clear()方法調用和停止,只有當輸入爲空或達到超時:

var titleInput = this.element(this.by.model('appModel.qTitle')); 

browser.wait(function() { 
    titleInput.clear(); 
    return titleInput.getAttribute('value').then(function (inputValue) { 
     return !inputValue; 
    }); 
}, 5000); 
+0

謝謝@alecxe。我一直在考慮這一點,但理想情況下,我也想首先明白問題所在:) –

+0

這沒有奏效。 我想也許有一段時間,當輸入呈現沒有文字,所以我添加了以下內容,但仍然沒有運氣。 ' var titleInput = this.element(this.by.model('appModel.qTitle')); browser.wait(function(){ return titleInput.getAttribute('value')。然後(函數(inputValue){return valueValue; }); 5000); browser.wait(函數(){ titleInput.clear();返回 titleInput.getAttribute( '值'),然後(函數(inputValue的){ inputValue的回報;! });} ,5000); ' –

+0

@鮑勃啊,有趣!如果你嘗試慢慢打字會怎樣(http://stackoverflow.com/questions/38187514/simulate-slow-typing-in-protractor)? – alecxe

0

感謝大家輸入!這絕對是Angular應用程序本身的時間問題,而不僅僅是我錯誤地使用了量角器。