2011-01-12 9 views
2

私は現在Seleniumと作業しています。スクリプトエラーがあった場合、Seleniumが見つけられるかどうかを知りたいと思います。Seleniumはスクリプトのエラーを認識できますか?

私は、スクリプトエラーにはフロー制御が必要であり、Selenium IDEにはそれがないと意識しています。また、エラーが深刻な場合は、テストケースが失敗することがあり、そこには問題があることを意識しています。それでも、Seleniumが少なくともどこかに格納できるようにしたいと思います。

私たちはFirefoxとIEでテストを実行しますので、window.onerrorを使用してエラーを記録できます。しかし、私はそれをSeleniumにどのように統合するかについてはわかりません。私が知る限り、レコーダーはそのハンドラーをwindow.documentに添付して、windowに添付する必要があります。私は自分でハンドラを追加するためにユーザー拡張ファイルからRecoreder.prototype.attachをデコレートしようとしましたが、むしろ不器用で、IDEで奇妙な動作が発生します(何もレコードがないので、

+0

あなたは簡単に十分なフロー制御を追加することができます。http://51elliot.blogspot.com/2008/02/selenium-ide-goto .html –

+0

@ Martins Jespersenありがとう、私はそれを知らなかった。しかし、私たちは、Selenium IDEを使って記録していますが、Selenium RCはすべてのフロー制御ニーズに対応しています。 – zneak

答えて

1

私は良い答えを得るためにセレンで十分深く掘り下げました。

デコレートRecorder.prototype.attachRecorder.prototype.detachはうまく動作します。あなたはちょうどwindow.onerrorイベントに自分自身を添付して、あなたのページでどのような悪いことが起こるかを知る必要があります。この問題は、エラーが発生したときに発生します。次の2つの選択肢があります。

  • 最後に呼び出した後にエラーがあったかどうかを確認するカスタムコマンドを作成します。
  • Seleniumのソースコードを編集して、各新しいコマンドの前に最後のコマンドでエラーがあったかどうかをチェックします。

動作を変更する必要があるファイルが拡張ファイルの後に読み込まれるため、後者を拡張子で実装することはできません。ここで

は、ユーザーの拡張子から適切な関数を飾ることができる方法です。

function decorate(decoratee, decorator) { 
    var decorated = function() { 
     decorator.apply(this, arguments); 
     if (decoratee && decoratee.apply) 
      decoratee.apply(this, arguments); 
    } 
    decorated.base = decoratee; 
    decorated.decorator = decorator; 
    return decorated; 
} 

Recorder.prototype.attach = decorate(Recorder.prototype.attach, function() { 
    var win = this.getWrappedWindow(); 
    win.onerror = decorate(win.onerror, function(message, file, line) { 
     // do something with the error 
    }); 
}); 

Recorder.prototype.detach = decorate(Recorder.prototype.detach, function() { 
    var win = this.getWrappedWindow(); 
    win.onerror = win.onerror.base; 
}); 
+0

Se RCで行うことはできますか?私はあなたがIDEについて話していると仮定しています – Rajasankar

+0

@Rajasankarいいえ、私はRCについて話しています。 Recorder.prototype.detachをコア拡張ファイルに飾ることができます(RCを介して送信します)。 – zneak

+0

いくつかの例を教えてもらえますか?私の人生は楽になります。情報をありがとう。 – Rajasankar

関連する問題