javascript – browser.pause()和browser.enterRepl()有什么区别?

在量角器中,有browser.pause() function

Beta (unstable) pause function for debugging webdriver tests. Use
browser.pause() in your test to enter the protractor debugger from
that point in the control flow.

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

而且,还有一个不太了解的一个 – browser.enterRepl()

Beta (unstable) enterRepl function for entering the repl loop from any
point in the control flow. Use browser.enterRepl() in your test. Does
not require changes to the command line (no need to add ‘debug’).

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

从提供的文档和示例中,显然它们都用于调试测试。但是,不清楚,两者之间有什么区别。

什么时候应该使用pause()和enterRepl()?

一般在docs说明,但我会尝试更深入。

量角器有two modes进行调试:DebuggerRepl和CommandRepl。

这里的代码代表Read-eval-print-loop,通常意味着无论您键入什么命令,都会在当前上下文中立即进行评估,并立即为您提供一个结果。例如,Chrome开发者工具中的控制台是Chrome实现JavaScript / DOM的一个REPL,或者当您在终端中运行节点时,您将获得Node.js的JavaScript上下文的REPL,您可以键入命令并获取结果。

当您使用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()语句。在使用它们时立即执行它们。所以这种模式基本上允许你跳过页面状态并探索结果。 (注意:此模式提供more commands;它们可以工作,但我不知道输出的含义是什么,如果它们对于量角器用户是有用的)。

当您使用browser.enterRepl()时,您正在激活CommandRepl模式。它允许您使用在测试中使用的量角器方法,但在交互模式下。您可以访问元素,浏览器和量角器对象,以便您可以运行:

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

它可以立即打印出结果,所以它是一个沙箱,您可以在当前页面状态下查询DOM并查看结果。

您可能已经注意到,browser.pause()命令列表有一行:

type "repl" to enter interactive mode

这意味着当您处于DebuggerRepl模式时,您可以执行repl命令以激活您刚刚运行browser.pause()的当前页面状态的CommandRepl模式,以便您可以像使用DOM一样玩DOM browser.enterRepl()。您可以使用exit命令返回到DebuggerRepl模式。但是,如果您使用browser.enterRepl()输入到CommandRepl模式,则无法切换到DebuggerRepl模式。

此外,CommandRepl模式可以使用名为elementExplorer的功能激活。可以在没有任何书面测试的情况下使用;它只是在CommandRepl模式下打开一个URL。

TL;博士

总而言之,我相信他们应该按照他们的名字被使用。

browser.pause() – 我想要一个浏览器在该地方完全暂停,以便我可以看到页面上发生了什么。然后,根据我的命令,我希望它跳到下一个状态,所以我可以看到这里发生了什么。如果我需要更多关于当前状态的信息,我可以运行repl,并使用Protractor API(浏览器,元素,量角器)进行调查。然后我可以退出这个模式,继续跳过状态。

browser.enterRepl() – 我想让一个浏览器在那个地方暂停,让我立即使用量角器API(浏览器,元素,量角器)调查一个页面,而且我不需要能够跳过这一页。

http://stackoverflow.com/questions/31413300/what-is-the-difference-between-browser-pause-and-browser-enterrepl

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – browser.pause()和browser.enterRepl()有什么区别?