Protractor – Générique attendez que l'URL change

Dans les questions précédentes, j'ai vu qu'une bonne façon d'attendre que l'URL change. C'est utiliser:

browser.wait( function() { return browser.getCurrentUrl().then(function(url) { return /myURL/.test(url); }); }, 10000, "url has not changed");` 

Mais j'essaie d'avoir une méthode pour que je puisse passer myURL comme variable (au cas où je devrais l'utiliser avec d'autres sites) et ne fonctionne pas.

J'essaie cela dans mon fichier d'objet de page:

 this.waitUrl = function(myUrl) { browser.wait( function(myUrl) { return browser.getCurrentUrl().then(function(url, myUrl) { return myUrl.test(url); }); }, 10000, "url has not changed"); }; 

Des idées si cela est possible et comment le faire si oui?

Mise à jour (juillet 2016): avec Protractor 4.0.0, vous pouvez le résoudre avec des urlIs et urlContains conditions prévues.


Réponse originale:

Ne passe pas myUrl à l'intérieur de la fonction then , il est disponible à partir de la portée de la fonction objet de la page:

 browser.wait(function() { return browser.getCurrentUrl().then(function(url) { return myUrl.test(url); }); }, 10000, "url has not changed"); 

Je le définirais cependant comme une condition attendue :

 function waitUrl (myUrl) { return function () { return browser.getCurrentUrl().then(function(url) { return myUrl.test(url); }); } } 

Pour que vous puissiez l'utiliser de cette façon:

 browser.wait(waitUrl(/my\.url/), 5000);