2

这是一个单击字段以输入某个值的测试的快速示例:

it('should enter someValue into field', function() {
  var field = $('.someField');

  // Insert timer start function here
  field.click();
  this.switchToActiveElement().sendKeys('someValue');
  this.hitEnter();
  // Insert timer stop function here and output result!

  assert.eventually.equal(field.getText(), 'someValue');
});

我想做的是单击该字段并输入一些值需要多长时间,然后以某种方式输出它的执行时间。我原本以为我可以只插入console.time()console.timeEnd()函数,但当然这不适用于量角器的控制流,对吧?

对此的任何帮助将不胜感激。谢谢!

4

1 回答 1

3

您所要做的就是在控制流的上下文中引用您的变量:

it('should enter someValue into field', function() {
  var field = $('.someField');
  var startTime;

  // Insert timer start function here
  browser.controlFlow().execute(function() {
      startTime = new Date().getTime();
  });

  field.click();
  this.switchToActiveElement().sendKeys('someValue');
  this.hitEnter();

  // Insert timer stop function here and output result!
  browser.controlFlow().execute(function() {
      var endTime = new Date().getTime();
      var elapsedTime = endTime - startTime;
      console.log('elapsedTime = ' + elapsedTime + 'ms');
  });

  assert.eventually.equal(field.getText(), 'someValue');
});

您记录的时间可能不太精确,因为量角器waitForAngular()在执行点击之前有一个内置的权利,并且不会在按下回车键后立即等待任何事情发生。browser.waitForAngular()如果您有兴趣捕捉页面稳定所需的时间,您可以在记录 endTime 之前添加自己的。

于 2016-06-23T15:49:14.813 回答