Protractor 如何使量角器的browser.wait()更详细?

Protractor 如何使量角器的browser.wait()更详细?,protractor,wait,Protractor,Wait,在量角器测试中,我多次调用browser.wait方法,例如,在特定元素出现在屏幕上或可单击时等待 在许多情况下,测试在我的本地机器上通过,但在其他机器上不通过。 我收到了关于超时的非常一般的信息,这对我调试/查找问题源没有多大帮助 是否可以使browser.wait更详细,例如: 如果在等待特定元素时至少会经过defaultTimeoutInterval,是否可以将有关它尝试等待的元素的信息记录到console.log中, 出现超时错误时拍摄屏幕截图, 当浏览器中出现超时时提供完整的调用堆栈。

在量角器测试中,我多次调用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方法中,这样我就可以轻松地打开和关闭详细模式。