在量角器测试中,我多次调用browser.wait
方法,例如等待特定元素出现在屏幕上或可单击之后。
在许多情况下,测试通过了我的本地计算机,但没有通过其他计算机。 我收到有关超时的非常通用的信息,这对调试/查找问题根源没有太大帮助。
是否可以使browser.wait
更加冗长,例如:
defaultTimeoutInterval
,是否有可能console.log
信息有关它试图等待的元素,browser.wait
中出现超时时,提供完整的调用堆栈答案 0 :(得分:1)
如果主要问题是您不知道等待超时的元素,我建议编写一个辅助函数来等待并使用它代替等待,例如:
wait = function(variable, variableName,waitingTime){
console.log('Waiting for ' + variableName);
browser.wait(protractor.ExpectedConditions.elementToBeClickable(variablename),waitingTime);
console.log('Success');
}
因为量角器在第一次失败后就停止执行测试,所以如果等待超时,则控制台在无法加载特定元素后不会打印成功消息。
对于屏幕截图,我建议尝试使用protractor-jasmine2-screenshot-reporter
,它会生成一个易于阅读的html报告,其中包含屏幕截图和有关失败测试的调试信息(例如,发生错误的代码行)。
答案 1 :(得分:0)
使用量角器的Expected Condition,您可以指定要等待的时间以及等待的时间。
对于屏幕截图,有npm模块可以在测试失败时进行屏幕截图。 This可能会有帮助。
答案 2 :(得分:0)
browser.wait返回一个promise,因此请捕获错误并打印/抛出有意义的内容,例如:
await browser.wait(ExpectedConditions.visibilityOf(css), waitingTime).catch((error) =>
{
throw new CustomError(`Could not find ${css} ${error.message}`)
});