Protractor 如何使用量角器在JS中创建isVisible函数?
我想这样做,但它不起作用,因为isPresent返回一个承诺,而不是布尔值Protractor 如何使用量角器在JS中创建isVisible函数?,protractor,Protractor,我想这样做,但它不起作用,因为isPresent返回一个承诺,而不是布尔值 this.isVisible = function(){ return browser.isElementPresent(_this.username) && browser.isElementPresent(_this.password) && browser.isElementPresent(_this.submit) } 我也试过了 this
this.isVisible = function(){
return browser.isElementPresent(_this.username) &&
browser.isElementPresent(_this.password) &&
browser.isElementPresent(_this.submit)
}
我也试过了
this.isVisible = function(){
return _this.username.isPresent() &&
_this.password.isPresent() &&
_this.submit.isPresent()
}
有办法解决这个问题吗?也许可以使用all,然后将其与单个布尔承诺或其他东西结合起来?您可以使用
量角器.promise.all()
:
如果您想添加一个:
这将使事情更加明确:
this.isVisible = function() {
return protractor.promise.all([
browser.isElementPresent(_this.username),
browser.isElementPresent(_this.password),
browser.isElementPresent(_this.submit)
]).then(spread(function (isUsernamePresent, isPasswordPresent, isSubmitPresent) {
return isUsernamePresent && isPasswordPresent && isSubmitPresent;
}));
}
很酷,这将返回一个带有单个布尔值的承诺right@Jackie是的,我还添加了一个更具可读性的版本,请查看。谢谢
function spread (callback) {
// and returns a new function which will be used by `then()`
return function (array) {
// with a result of calling callback via apply to spread array values
return callback.apply(null, array);
};
};
this.isVisible = function() {
return protractor.promise.all([
browser.isElementPresent(_this.username),
browser.isElementPresent(_this.password),
browser.isElementPresent(_this.submit)
]).then(spread(function (isUsernamePresent, isPasswordPresent, isSubmitPresent) {
return isUsernamePresent && isPasswordPresent && isSubmitPresent;
}));
}