¿cómo puedo obtener la url actual usando protractor?


Estoy probando un sitio web usando protractor y jasmine. Me gustaría saber la url actual para verificar una prueba.

He intentado

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);
                });
            });
        }
    );
}

Y estoy usando esta función, de esta manera

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");
});
Author: alecxe, 2015-04-01

3 answers

Aquí hay un código de trabajo basado en el ejemplo proporcionado por el autor de las Condiciones Esperadas :

var urlChanged = function(url) {
  return function () {
    return browser.getCurrentUrl().then(function(actualUrl) {
      return url != actualUrl;
    });
  };
};

Uso:

element(by.linkText('Acceder')).click();
browser.wait(urlChanged("http://localhost:9000/#/solicitudes"), 5000); 
 34
Author: alecxe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 17:15:36

Alecxe su respuesta fue muy útil.

Pero no podrías simplemente codificar:

 expect(browser.getCurrentUrl()).toEqual('whateverbrowseryouarexpectingtobein');

Y si esto falla, entonces sabes que vas al lugar equivocado.

 35
Author: Luctheduke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:14

Desde Protractor 4.0.0 ahora puedes usar las condiciones esperadas para saber cuándo cambió tu url.

const EC = protractor.ExpectedConditions;
browser.wait(EC.urlContains('my-url'), 5000);

El asnwer que encontré viene de este, no tengo créditos reales para ello. Pero por si ayuda.

Protractor-Generic esperar a que la URL cambie

 4
Author: Etienne-Joseph Charles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-25 15:20:22