Проверьте ожидаемый URL и отобразите фактический URL - PullRequest
0 голосов
/ 16 января 2019

В функциональном тесте я пытаюсь написать шаг «Тогда», где я проверяю текущий URL.

После просмотра SO кажется, что правильный способ сделать это - "подождать", когда URL станет ожидаемым:

Then('The URL contains {string}', function(url, callback) {
  browser.wait(EC.urlContains(url), 5000)
    .then(() => callback())
});

Проблема в том, что если условие неверно, я не знаю, какой фактический URL-адрес, и это было бы полезно для отладки.

Я пытался сделать следующее:

Then('The URL contains {string}', function(url, callback) {
  browser.wait(EC.urlContains(url), 5000)
    .then(() => callback())
    .catch(() => { throw Error('URL was ' + location.href); });
});

но я получаю ошибку, потому что location - это undefined.

Я также попробовал следующее:

Then('The URL contains {string}', function(url, callback) {
  browser.wait(EC.urlContains(url), 5000)
    .then(() => callback())
    .catch(() => { throw Error('URL was ' + browser.executeScript('location.href')); });
});

Но я вижу только:

Ошибка: URL-адрес был ManagedPromise :: 19695 {[[PromiseStatus]]: "в ожидании"}

Потому что browser.executeScript возвращает только Promise.

Как правильно отобразить фактический URL в сообщении об ошибке?

1 Ответ

0 голосов
/ 16 января 2019

Я наконец нашел это:

Then('The URL contains {string}', function (url, callback) {
  browser.wait(EC.urlContains(url), 5000)
    .then(() => callback())
    .catch(() => {
      browser.getCurrentUrl().then((url) => { throw Error('URL was ' + url); });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...