如何使量角器的browser.wait()更冗长?

时间:2018-09-04 09:00:55

标签: protractor wait

在量角器测试中,我多次调用browser.wait方法,例如等待特定元素出现在屏幕上或可单击之后。

在许多情况下,测试通过了我的本地计算机,但没有通过其他计算机。 我收到有关超时的非常通用的信息,这对调试/查找问题根源没有太大帮助。

是否可以使browser.wait更加冗长,例如:

  • 如果在等待特定元素时至少经过defaultTimeoutInterval,是否有可能console.log信息有关它试图等待的元素,
  • 在发生超时错误时拍摄屏幕截图,
  • browser.wait中出现超时时,提供完整的调用堆栈

3 个答案:

答案 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}`)
});