我試圖在input
字段中替換文字。鑑於原始文本foo
,我試圖用bar
替換它。量角器:等待文字爲可變
在大多數情況下,正常工作,但間歇我看到一個問題,結果可能是foobar
,fooar
,foor
甚至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之前是可變的放置它?
不,它不會出錯,它會繼續執行,就好像它成功了一樣。 –
我認爲你的問題的根本原因是'輸入'的qv-enter =「toggleEditMode()」屬性。我一直未能在網上找到太多內容(似乎與Qlik View有某種關係),但名稱暗示它負責阻止任何輸入,直到滿足某些條件。由於這是另一個框架,量角器無法知道它應該等待這個腳本完成。看來自定義等待是唯一的出路。如果你可以提供''toggleEditMode'函數的內部知識,那麼肯定會有幫助。 –
該屬性僅處理在輸入中輸入「return」字符的情況。然後它將頁面切換回「只讀」。我不相信它在這裏發生的事情中發揮作用。 –