web-dev-qa-db-fra.com

comment puis-je obtenir l'url actuelle en utilisant un rapporteur?

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");
});
30
lmiguelvargasf

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); 
41
alecxe

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.

41
LucCW

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.

Protractor- Attente générique que l'URL change

6
etiennejcharles