Angularjs分度器ジャスミンテストでconsole.log出力を表示するにはどうすればよいですか?今のところ、ブラウザは自動的に閉じすぎます。
詳細-Angularjsチュートリアル、ステップ8で作業しています。e2eテストを分度器に変更しようとしています。私が使用している分度器設定ファイルは、%appdata%\ npm\node_modules\protractor\referenceConf.jsに基づいています。構成ファイルによって参照されるスペックjsファイルには、console.logのインスタンスがあります。ただし、分度器e2eテストの実行中に、Webサイトがクロムで開かれ、ブラウザーで何かが発生したことがわかります。その後、console.log出力を調べる前にブラウザーが閉じます。 chromeを何とか開いたままにしておく必要があると思います。どうやって?
browser.manage().logs().get('browser')
を使用します
browser.manage().logs().get('browser').then(function(browserLogs) {
// browserLogs is an array of objects with level and message fields
browserLogs.forEach(function(log){
if (log.level.value > 900) { // it's an error log
console.log('Browser console error!');
console.log(log.message);
}
});
});
一般的な誤解は、_console.log
_がブラウザに記録することです。それは間違っています。テストを実行すると、テストの結果とともに、端末にもconsole.log()
値が表示されます。ブラウザコンソールはこれとはまったく異なります。
一般的な例:
_it('get name as John', function(){
element(by.id('name')).getText().then(function(value){
console.log(value);
})
});
_
ターミナルでの結果:
_John
get name as John - pass
_
それが役に立てば幸い。
これは今、達成することができます特別なコードを書くことなくそしてプラグインを介して:
protractor-console-plugin
(Chromeのみ)protractor-console
ブラウザのウィンドウを開いたままにするには、Protractorをデバッグモードで実行してみてください。
$ <route-to-protractor> debug <route-to-conf-file>
次に、スペックファイルで、実行を停止する場所に次の行を追加します。
browser.debugger();
Protractorデバッガーコンソールで、c
またはcont
と入力して、ストップをステップオーバーできます。
詳細はこちら: https://github.com/angular/protractor/blob/master/docs/debugging.md
コンソールコンテンツを取得するには、Protractor FAQでその方法を確認できます。 https://github.com/angular/protractor/blob/master/docs/faq.md#how-can- i-get-hold-of-the-browsers-console
何かのようなもの:
browser.manage().logs().get('browser').then(function(browserLog) {
console.log('log: ' + require('util').inspect(browserLog));
})
簡単なオプションは以下を使用することです:
browser.pause();
protractor/api/browser.pause
例えば:
it('should .. test stuff', function() {
browser.pause(); //--->the automation will pause here - follow the instructions in your terminal to continue
//--->your broken testing magic here...
});
ブラウザコンソールを表示する必要がある仕様本文の最初の項目として、そのメソッド呼び出しを配置します。
ブラウザが一時停止すると、自動化を制御できるようになります。その後、通常どおりブラウザと対話し、さまざまな状態の要素を検査したり、ブラウザコンソールを確認したりできます。
ターミナルで続行するためにc
を入力してテストを続行します。入力を待機している指示を含むプロンプトが表示されます。
ロギングレベルを変更して、他のタイプのコンソール出力を表示することもできます。
これを行うための分度器のよくある質問への私の提案された更新を参照してください here
テストでは、console.logをいつでもオーバーライドできます。
logMessages = [];
console.log = function(message) {
logMessages.Push(message);
}
Console.logの代わりに$ logを使用し、次のようなソリューションを使用して、ログメッセージにいくつかのフックを入れることもできます。 https://Gist.github.com/lrvick/6938531