В функциональном тесте я пытаюсь написать шаг «Тогда», где я проверяю текущий 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 в сообщении об ошибке?