Как я могу получить текущий url с помощью транспортира?
Я тестирую сайт с помощью транспортира и жасмина. Я хотел бы узнать текущий URL-адрес, чтобы проверить тест.
Я пробовал
function waitForUrlToChangeTo(urlRegex) {
var currentUrl;
return browser.getCurrentUrl().then(function storeCurrentUrl(url) {
currentUrl = url;
}
).then(function waitForUrlToChangeTo() {
return browser.wait(function waitForUrlToChangeTo() {
return browser.getCurrentUrl().then(function compareCurrentUrl(url) {
return urlRegex.test(url);
});
});
}
);
}
и я использую эту функцию таким образом
it('should log', function() {
//element(by.model('user.username')).sendKeys('asd');
//element(by.model('user.password')).sendKeys('asd');
element(by.linkText('Acceder')).click();
waitForUrlToChangeTo("http://localhost:9000/#/solicitudes");
});
Ответы
Ответ 1
Если вы хотите просто проверить текущий URL, то используйте browser.getCurrentUrl()
:
expect(browser.getCurrentUrl()).toEqual("expectedUrl");
Но, если вам нужно подождать, пока URL не совпадет с определенным значением, смотрите следующую часть ответа.
Вот рабочий код, основанный на примере, представленном автором ожидаемых условий:
var urlChanged = function(url) {
return function () {
return browser.getCurrentUrl().then(function(actualUrl) {
return url != actualUrl;
});
};
};
Использование:
element(by.linkText('Acceder')).click();
browser.wait(urlChanged("http://localhost:9000/#/solicitudes"), 5000);
Ответ 2
Alecxe ваш ответ был очень полезным.
Но вы не могли бы просто закодировать:
expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');
И если это не удастся, то вы знаете, что идете в неправильное место.
Ответ 3
Так как Protractor 4.0.0, вы можете теперь использовать ожидаемые условия, чтобы знать, когда ваш URL изменился.
const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);
Как я узнал от этого, у меня нет реальных кредитов. Но на всякий случай это поможет.
Прототип-общий просмотр URL-адреса для изменения