在之前的问题中,我已经看到等待url更改的好方法是使用:
browser.wait( function() { return browser.getCurrentUrl().then(function(url) { return /myURL/.test(url); }); }, 10000, "url has not changed");`
但我试图有一个方法,我可以将myURL作为变量传递(如果我需要将其与其他网站一起使用)并且无法正常工作.
我在我的Page Object文件中尝试这个:
this.waitUrl = function(myUrl) { browser.wait( function(myUrl) { return browser.getCurrentUrl().then(function(url, myUrl) { return myUrl.test(url); }); }, 10000, "url has not changed"); };
如果这是可能的任何想法,如果这样做怎么办?
更新(2016年7月):使用Protractor 4.0.0,您可以使用urlIs
并urlContains
内置预期条件来解决它.
原始答案:
不要传递函数myUrl
内部then
,它可以从页面对象函数范围获得:
browser.wait(function() { return browser.getCurrentUrl().then(function(url) { return myUrl.test(url); }); }, 10000, "url has not changed");
我会把它定义为预期条件:
function waitUrl (myUrl) { return function () { return browser.getCurrentUrl().then(function(url) { return myUrl.test(url); }); } }
这样你就可以这样使用它:
browser.wait(waitUrl(/my\.url/), 5000);