2017-04-20 7 views
0

私はそのことについてStaleElementReferenceException、またはその他を処理し、再び要素を見つけ、それをクリックしてみてくださいすることになっている次のスニペットインターンJSで例外をキャッチするにはどうすればよいですか?

,clickStaleElement: function(remote, id) { 
    return remote 
    .findById(id) 
     .execute(function(id){ 
     //force org.openqa.selenium.StaleElementReferenceException 
     $(document.getElementById(id)).addClass('hidden'); 
     },[id]) 
     .click() 
     .catch(function(){ 
     return this.parent 
      .findById(id) 
      .execute(function(id){ 
       //bring back the element 
       $(document.getElementById(id)).removeClass('hidden'); 
      },[id]) 
      .click() 
      .end() 
     ; 
     }) 
    .end() 
    ; 
} 

を持っています。この要素は、一定の間隔でdomに追加/削除されるため、テスト実行時にこの例外が発生することがあり、実行に失敗することがあります。私はこの例外を処理し、実行が失敗するのを防ぐために、バグのために実際に失敗しないようにしたい(またはそれは?)。

質問があります.click()メソッドで例外を処理するにはどうすればよいですか?

答えて

1

コールバックでthis.parentの代わりにremoteを使用してみます。 this.parentは、親チェーンと同じコンテキスト要素を使用します。これは、古くなった要素をクリックしようとしたためにキャッチが終了した場合、catchthis.parent.findById(id)を呼び出すと、その古い要素に根ざした検索が実行されることを意味します。

+0

それはそれだった。 – KiaMorot

+0

どのようにしてループチェックを書きますか?内側のクリックで例外が発生する可能性があるため、固定間隔でこれを無効にしますか? – KiaMorot

+0

どういう意味ですか?これは新しい質問としては良いかもしれません... – jason0x43

関連する問題