Как сделать Protractor browser.wait () более многословным? - PullRequest
0 голосов
/ 04 сентября 2018

В тестах Protractor я много раз вызываю метод browser.wait, например, чтобы подождать, когда конкретный элемент появится на экране или он станет активным.

Во многих случаях тесты проходят на моей локальной машине, но не на другой. Я получаю очень общую информацию о тайм-ауте, которая не очень помогает мне в отладке / поиске источника проблемы.

Можно ли сделать browser.wait более многословным, например:

  • если по крайней мере defaultTimeoutInterval истечет при ожидании определенного элемента, будет ли возможно console.log информация об элементе, который он пытался дождаться,
  • сделать снимок экрана при возникновении ошибки тайм-аута,
  • обеспечивает полный стек вызовов при появлении тайм-аута в browser.wait

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Если основная проблема заключается в том, что вы не знаете, для какого элемента истекло время ожидания, я бы предложил написать вспомогательную функцию для ожидания и использовать ее вместо ожидания, что-то вроде:

    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-отчет со скриншотами и отладочной информацией о неудачных тестах (например, в какой строке кода произошел сбой).

0 голосов
/ 05 ноября 2018

browser.wait возвращает обещание, так что поймайте ошибку и напечатайте / выбросите что-нибудь значимое, например:

await browser.wait(ExpectedConditions.visibilityOf(css), waitingTime).catch((error) => 
{
  throw new CustomError(`Could not find ${css} ${error.message}`)
});
0 голосов
/ 04 сентября 2018

Изучите использование транспортира Ожидаемое состояние , вы можете указать, что ждать и как долго его ждать.

Для скриншотов существуют модули npm, которые могут сделать скриншот при неудачном тестировании. Это может помочь.

...