Je teste un site Web en utilisant un rapporteur et du jasmin. Je voudrais connaître l'url actuelle afin de vérifier un test.
J'ai essayé
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);
});
});
}
);
}
et j'utilise cette fonction de cette façon
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");
});
Si vous souhaitez simplement vérifier l'URL actuelle, utilisez alors browser.getCurrentUrl()
:
expect(browser.getCurrentUrl()).toEqual("expectedUrl");
Mais, si vous devez attendre que l'URL corresponde à une certaine valeur, consultez la partie suivante de la réponse.
Voici un code de travail basé sur l'exemple fourni par l'auteur des Conditions attendues :
var urlChanged = function(url) {
return function () {
return browser.getCurrentUrl().then(function(actualUrl) {
return url != actualUrl;
});
};
};
Usage:
element(by.linkText('Acceder')).click();
browser.wait(urlChanged("http://localhost:9000/#/solicitudes"), 5000);
Alecxe votre réponse a été très utile.
Mais ne pourriez-vous pas simplement coder:
expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');
Et si cela échoue, alors vous savez que vous allez au mauvais endroit.
Depuis Protractor 4.0. vous pouvez maintenant utiliser les conditions attendues pour savoir quand votre URL a changé.
const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);
La réponse que j'ai trouvée vient de celle-ci , je n'ai aucun vrai crédit pour cela. Mais juste au cas où ça aiderait.