web-dev-qa-db-ja.com

分度器をゆっくり動作させることはできますか?

Angular分度器を使用して記述されたE2Eテストをゆっくり実行して、何が起こっているかを見ることができますか?

50
cortfr

以下はそのための私の解決策です。したがって、基本的に、現在の制御フローexecute関数のデコレーターを作成しました。これは、各キューアクションの前に100ミリ秒の遅延を追加でキューします。

これは、テストを呼び出す前に実行する必要があります(describeブロック外)

var origFn = browser.driver.controlFlow().execute;

browser.driver.controlFlow().execute = function() {
  var args = arguments;

  // queue 100ms wait
  origFn.call(browser.driver.controlFlow(), function() {
    return protractor.promise.delayed(100);
  });

  return origFn.apply(browser.driver.controlFlow(), args);
};
77
Filip Sobczak

ジョージ・ストッカーがコメントで言ったように、なぜあなたがこれをしたいのかわかりません...しかし、あなたはあなたのテストでどこでも好きなところにいつでも睡眠を加えることができます。

browser.sleep(6000);
13
David Greenwell

コードにコマンドを配置することにより、「デバッグモード」に入ることができます。

_browser.pause();
_

デバッグモードでは、ターミナルに次の出力が表示されます。

_------- WebDriver Debugger -------
ready

press c to continue to the next webdriver command
press d to continue to the next debugger statement
type "repl" to enter interactive mode
type "exit" to break out of interactive mode
press ^C to exit
_

その後、次のことができます。

  • cと入力してコマンドごとにコマンドを実行します
  • dと入力して、次のデバッガーステートメント(次のbrowser.pause())に進みます。
  • replを入力して、すべての要素と対話できる対話モードに入ります。
11
Julio

以前の回答は回避策のように見えます。別の方法は、Protractor configにparamを追加することです:

highlightDelay: 1000

そして次のように変更します:

directConnect: false

クリックや入力などの分度器のアクションが1秒間遅延し、水色で強調表示されます。

8
Justas