下面是一个简单的测试示例,单击字段以输入某个值:
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()
函数,但当然这不适用于 Protractor 的控制流,对吗?
任何有关此问题的帮助将不胜感激。谢谢!
最佳答案
您所要做的就是在控制流的上下文中引用变量:
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');
});
您记录的时间可能不太精确,因为 Protractor 在执行单击之前有一个内置的 waitForAngular()
,并且在按下 Enter 键后不会等待任何事情发生。如果您有兴趣捕获页面稳定所需的时间,您可以在记录 endTime 之前添加自己的 browser.waitForAngular()
。
关于selenium - 有没有办法在Protractor的控制流中添加定时器事件来测量特定任务的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955782/