Protractor 如何使量角器的browser.wait()更详细?
在量角器测试中,我多次调用browser.wait方法,例如,在特定元素出现在屏幕上或可单击时等待 在许多情况下,测试在我的本地机器上通过,但在其他机器上不通过。 我收到了关于超时的非常一般的信息,这对我调试/查找问题源没有多大帮助 是否可以使browser.wait更详细,例如: 如果在等待特定元素时至少会经过defaultTimeoutInterval,是否可以将有关它尝试等待的元素的信息记录到console.log中, 出现超时错误时拍摄屏幕截图, 当浏览器中出现超时时提供完整的调用堆栈。等待Protractor 如何使量角器的browser.wait()更详细?,protractor,wait,Protractor,Wait,在量角器测试中,我多次调用browser.wait方法,例如,在特定元素出现在屏幕上或可单击时等待 在许多情况下,测试在我的本地机器上通过,但在其他机器上不通过。 我收到了关于超时的非常一般的信息,这对我调试/查找问题源没有多大帮助 是否可以使browser.wait更详细,例如: 如果在等待特定元素时至少会经过defaultTimeoutInterval,是否可以将有关它尝试等待的元素的信息记录到console.log中, 出现超时错误时拍摄屏幕截图, 当浏览器中出现超时时提供完整的调用堆栈。
研究使用量角器,您可以指定等待什么以及等待多长时间
对于屏幕截图,有一些npm模块可以在测试失败时截图。可能会有帮助。如果主要问题是您不知道等待超时的是哪个元素,我建议为wait编写一个helper函数,并使用它代替wait,例如:
wait = function(variable, variableName,waitingTime){
console.log('Waiting for ' + variableName);
browser.wait(protractor.ExpectedConditions.elementToBeClickable(variablename),waitingTime);
console.log('Success');
}
因为量角器在第一次失败后停止执行测试,若等待超时,控制台在加载某个元素失败后将不会打印成功消息
对于屏幕截图,我建议尝试使用Digrator-jasmine2-screenshot-reporter,它可以生成一个易于阅读的html报告,其中包含失败测试的屏幕截图和调试信息,例如,失败发生在哪个代码行。browser.wait返回一个承诺,因此捕获错误并打印/抛出一些有意义的内容,如:
await browser.wait(ExpectedConditions.visibilityOf(css), waitingTime).catch((error) =>
{
throw new CustomError(`Could not find ${css} ${error.message}`)
});
我正在使用预期条件。在我的问题中,我没有直接提到我使用elementtopickable和presenceOf。问题是,当量角器等待其中一个,然后将其标记为失败时,我不知道是哪一个导致了问题,因为控制台中只有超时发生的信息。谢谢。我也考虑过这一点,但我认为它将在控制台中创建很多输出。也许我应该将switch添加到这个helper方法中,这样我就可以轻松地打开和关闭详细模式。