web-dev-qa-db-ja.com

angular分度器ジャスミンテストでconsole.log出力を表示する

Angularjs分度器ジャスミンテストでconsole.log出力を表示するにはどうすればよいですか?今のところ、ブラウザは自動的に閉じすぎます。

詳細-Angularjsチュートリアル、ステップ8で作業しています。e2eテストを分度器に変更しようとしています。私が使用している分度器設定ファイルは、%appdata%\ npm\node_modules\protractor\referenceConf.jsに基づいています。構成ファイルによって参照されるスペックjsファイルには、console.logのインスタンスがあります。ただし、分度器e2eテストの実行中に、Webサイトがクロムで開かれ、ブラウザーで何かが発生したことがわかります。その後、console.log出力を調べる前にブラウザーが閉じます。 chromeを何とか開いたままにしておく必要があると思います。どうやって?

39
Bill Swartz

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);
      }
   });
});
40
Mohsen

一般的な誤解は、_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
_

それが役に立てば幸い。

8
Sandy

これは今、達成することができます特別なコードを書くことなくそしてプラグインを介して:

6
alecxe

ブラウザのウィンドウを開いたままにするには、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));
})
5
pacog

簡単なオプションは以下を使用することです:

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を入力してテストを続行します。入力を待機している指示を含むプロンプトが表示されます。

2
mcgraw

ロギングレベルを変更して、他のタイプのコンソール出力を表示することもできます。

これを行うための分度器のよくある質問への私の提案された更新を参照してください here

2
user1337489

テストでは、console.logをいつでもオーバーライドできます。

logMessages = [];

console.log = function(message) {
    logMessages.Push(message);
}

Console.logの代わりに$ logを使用し、次のようなソリューションを使用して、ログメッセージにいくつかのフックを入れることもできます。 https://Gist.github.com/lrvick/6938531

1
rob