在前面的问题中,我看到等待 url 更改的一个好方法是使用:
browser.wait( function() {
return browser.getCurrentUrl().then(function(url) {
return /myURL/.test(url);
});
}, 10000, "url has not changed");`
但我正在尝试一种可以将 myURL 作为变量传递的方法(以防我需要在其他网站上使用它),但无法正常工作。
我正在我的页面对象文件中尝试这样做:
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
内置预期条件。
原答案:
不要在then
函数中传递myUrl
,它在页面对象函数范围内可用:
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);
关于javascript - Protractor - 通用等待 URL 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358542/