web-dev-qa-db-ja.com

browser.pause()とbrowser.enterRepl()の違いは何ですか?

分度器には、 browser.pause() function があります。

ベータ版(不安定)pauseは、Webdriverテストをデバッグするための関数です。テストでbrowser.pause()を使用して、制御フローのその時点から分度器デバッガーに入ります。

_element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();
_

そして、あまり知られていないものもあります- browser.enterRepl()

制御フローの任意のポイントからreplループに入るためのベータ(不安定)enterRepl関数。テストでbrowser.enterRepl()を使用します。コマンドラインを変更する必要はありません(「デバッグ」を追加する必要はありません)。

_element(by.id('foo')).click();
browser.enterRepl();
// Execution will stop before the next click action.
element(by.id('bar')).click();
_

提供されているドキュメントと例から、これらの両方がテストのデバッグに使用されていることが明らかです。しかし、両者の違いは明らかではありません。

いつpause()enterRepl()を使用すべきですか?

22
alecxe

一般的に docs で説明されていますが、もう少し詳しく説明します。

分度器には、デバッグ用に 2つのモード があります: DebuggerRepl および CommandRepl

Repl は、ここで Read-eval-print-loop を表します。これは通常、入力したコマンドが何であれ、すぐに評価されることを意味します現在のコンテキストと、すぐに結果が提供されます。たとえば、 Chrome Developer Tools のコンソールは [〜#〜] repl [〜#〜] for Chrome's JavaScript/DOM の実装、またはnodeをターミナルで実行すると、 [〜# 〜] repl [〜#〜] Node.jsのJavaScript コンテキスト-コマンドを入力して結果を取得できます。


browser.pause()を使用すると、 DebuggerRepl がアクティブになります。このモードのコマンドを実行できる Repl が表示されます。通常、端末には次のコマンドリストが表示されます。

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コマンドを使用して次のWebDriverコマンドに移動するか、dコマンドを使用してテストの次のbrowser.pause()ステートメントにジャンプできます。使用するとすぐに実行されます。したがって、このモードでは基本的にページの状態をジャンプして結果を調べることができます。 (注:このモードは その他のコマンド を提供しますが、機能しますが、出力の意味が分からず、分度器ユーザーに役立つかどうかはわかりません。)


browser.enterRepl()を使用すると、 CommandReplモードがアクティブになります。テストで使用する Protractor メソッドを使用できますが、インタラクティブモードで使用できます。 elementbrowser、およびprotractorオブジェクトにアクセスできるため、たとえば次を実行できます。

> $('.hello').getText();
> 'World'

結果をすぐに出力するので、DOMを照会できるサンドボックスのようなものです現在のページの状態で結果を確認できます。

お気づきかもしれませんが、コマンドのbrowser.pause()リストには次の行があります。

type "repl" to enter interactive mode

これは、 DebuggerReplモードにいるときに、replコマンドを実行して、 CommandReplモード現在のページ状態browser.pause()を実行したばかりなので、browser.enterRepl()を使用したかのようにDOMを操作できます。 exitコマンドを使用して、 DebuggerReplモードに戻ることができます。ただし、browser.enterRepl()を使用して CommandRepl mode に入った場合、 DebuggerRepl mode に切り替えることはできません。

また、 CommandRepl mode は、 elementExplorer と呼ばれる機能でアクティブにできます。書面によるテストなしで使用できます。 CommandReplモードでURLを開くだけです。


tl; dr

要約すると、私はそれらがどのように呼ばれるかに従って使用されることになっていると信じています。

browser.pause()-ブラウザーをその場所で正確に一時停止させて、ページで何が起きているかを確認できるようにします。次に、私のコマンドで、次の状態にジャンプして、ここで何が起こっているのかを確認します。現在の状態に関する詳細情報が必要な場合は、replを実行して Protractor API browserelementprotractor)調査します。その後、このモードをexitして、状態をジャンプし続けることができます。

browser.enterRepl()-その場所でブラウザを正確に一時停止させ、 Protractor API browserelementprotractor)、すぐにページの状態間をジャンプする必要はありません。

33

分度器バージョン5.3 Nodeバージョン8.10はサポートしていませんbrowser.pause()はもうありません。詳細情報- ここ

分度器非同期非同期 を使用すると、必要なことを実行できる可能性があります。

1
Paulo Merson