量角器可以慢慢运行吗?

cor*_*tfr 51 testing angularjs protractor e2e-testing

有没有办法慢慢使用量角器编写Angular E2E测试,以便我可以观察到发生了什么?

Fil*_*zak 77

以下是我的解决方案.所以基本上我为当前控制流execute功能创建了一个装饰器,现在它在每个排队动作之前排队延迟100ms.

这需要在调用任何测试之前运行(在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);
};
Run Code Online (Sandbox Code Playgroud)

  • 这太疯狂了:) +1 (11认同)
  • 这是完美的!我将使用量角器打开票证 - 他们应该支持将每个命令推迟开箱即用的功能 - 在调试失败的测试时,这非常有用. (5认同)

Dav*_*ell 13

就像乔治·斯托克在评论中所说的那样,我不知道你为什么要这样做......但你可以随时在测试中的任何地方添加一个睡眠.

browser.sleep(6000);
Run Code Online (Sandbox Code Playgroud)

  • 好的,谢谢...我想我正在寻找的是在每个承诺完成后为控制流添加短暂睡眠的东西。 (2认同)

Jul*_*lio 11

您可以通过在代码中放入命令来输入'debug mode':

browser.pause();
Run Code Online (Sandbox Code Playgroud)

在调试模式下,您将在终端中看到以下输出:

------- 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
Run Code Online (Sandbox Code Playgroud)

然后你可以:

  • 通过输入命令运行命令 c
  • 输入以继续下一个调试器语句(下一个browser.pause())d
  • 进入交互模式,您可以通过输入与所有元素进行交互 repl


Jus*_*tas 8

先前的答案更像是解决方法。另一种方法是将参数添加到量角器配置中:

highlightDelay: 1000
Run Code Online (Sandbox Code Playgroud)

并更改为:

directConnect: false
Run Code Online (Sandbox Code Playgroud)

它将延迟量角器的动作(例如单击或键入)1秒钟,并以浅蓝色突出显示。