Как я могу получить текущий 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");
});
3 ответа
Решение
Вот рабочий код, основанный на примере, представленном автором ожидаемых условий:
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);
alecxe ваш ответ был очень полезным.
Но не могли бы вы просто написать код:
expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');
И если это не удается, то вы знаете, что вы идете не в том месте.
Начиная с Protractor 4.0.0 теперь вы можете использовать ожидаемые условия, чтобы узнать, когда ваш URL изменился.
const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);
Ответ, который я нашел, происходит от этого, у меня нет реальных кредитов для этого. Но на всякий случай это поможет.