2017-04-18 5 views
2

inputフィールドのテキストを置き換えようとしています。元のテキストfooが与えられているので、私はそれをbarに置き換えようとしています。多くの場合分度器:テキストの変更を待っています

、これは期待通りに動作しますが、断続的に、私は結果がfoobarfooarfoorあるいはfooすることができ、問題を見ています。これは、私のsendkeys()が実行され始めたときに、テキストが不変の状態になることがあり、sendkeys()の実行によって部分的に変更可能になることを暗示しているようです。

clear()は、単にいくつかのケースでは、元のテキストを削除するために失敗し、私は前sendkeys()に入力をクリアするためにclear()を使用してみましたが、動作は変更されません。また、元のテキストがinputに表示されるのを待ってから、を呼び出す前にinputがクリック可能になるのを待ってから、それをクリックするのを待っていました。ここでも、元の動作は変更されません。ここで

は私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にしようとする前にテキストが変更可能であることを確認する方法はありますか?それを置く?

私はあなたがカスタム繰り返し .clear()メソッドの呼び出しを発行し、入力が空になるか、タイムアウトに達したときにのみ停止します待つ 持つことで、物事の信頼性を高めることができると思い
+0

いいえ、エラーは発生しません。成功したかのように実行を継続します。 –

+0

問題の根本原因は、 'input'の' qv-enter = "toggleEditMode()" '属性だと思います。私はこのオンラインについて多くのことを見つけることができませんでしたが(Qlik Viewと何らかの形で関係しているようですが)、名前はいくつかの条件が満たされるまで入力をブロックする責任があることを示唆しています。これは別のフレームワークなので、分度器はこのスクリプトが終了するのを待つべきであることを知る方法がありません。カスタムウェイトが唯一の方法だと思われます。 'toggleEditMode'関数の内部知識は、もしあなたがそれらを提供できるなら、間違いなく助けになるでしょう。 –

+0

この属性は、入力に 'return'文字が入力された場合のみ処理します。その後、ページを 'read-only'に戻します。私はここで何が起こっているのかがその役割を果たしているとは思わない。 –

答えて

3

:用

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')。次に(function(inputValue){ return inputValue; }); }、5000); browser.wait(関数(){ titleInput.clear(); リターンtitleInput.getAttribute( '値')を(関数(inputValueで){ リターンinputValueで;! }); }、5000)。 ' –

+0

@BobBああ、面白い!ゆっくり入力しようとするとどうなりますか(http://stackoverflow.com/questions/38187514/simulate-slow-typing-in-protractor)? – alecxe

0

感謝を入力皆!これは間違いなく角度アプリケーション自体のタイミングの問題であり、誤って分度器を使用しているだけではありません。

関連する問題