失败:无法读取未定义的属性'bind'
页面对象类:
this.popupToastIP = function(){
element.all(by.className('toast-success toast ng-trigger ng-trigger-
flyInOut')).then(function(){
element(by.className('toast-success toast ng-trigger ng-trigger-flyInOut')).getText();
});
测试规范:
browser.wait(EC.visibilityOf(publisher_whitelist_page.popupToastIP),5000);
expect(publisher_whitelist_page.popupToastIP.toEqual('Ip address removed'));
尝试删除“全部”但无效 - 仍然出现相同错误(按照帖子undefined property 'bind' when using expected conditions的建议
非常感谢任何帮助!
谢谢!
科斯蒂
修改
尝试添加绑定但又无效。
this.popupToastIP = function(){
element.all(by.className('toast-success toast ng-trigger ng-trigger-
flyInOut')).then(function(){
element(by.className('toast-success toast ng-trigger ng-trigger-
flyInOut')).getText();
}).bind(this);
};
答案 0 :(得分:1)
你的代码是错误的,无论是量角器还是其他东西,都是无关紧要的。另一件事你可以将代码缩进其他易于阅读的内容。
1)这个函数的最终目的是从元素中获取文本或者
找一个元素?
this.popupToastIP = function(){
element.all(by.className('toast-success toast ng-trigger ng-trigger-flyInOut'))
.then(function(){
element(by.className('toast-success toast ng-trigger ng-trigger-flyInOut'))
.getText();
});
}
第1期
为什么你通过两次相同的类名找到元素,element.all(xxx)是多余的,因为你没有在下面的()中使用它的结果。
第2期
你没有为函数返回值,但是你在Test Spec中的代码要求它有返回值。
2)您在Test Spec中的代码如下所示,要求popupToastIP
返回元素和元素文本,它们已经发生冲突。
browser.wait(EC.visibilityOf(publisher_whitelist_page.popupToastIP),5000); // require return an element
expect(publisher_whitelist_page.popupToastIP.toEqual('Ip address removed')); // require return text of element
第1期
你将popupToastIP
视为一个函数,你错过了()
。它不可能在页面上显示功能,并且等于删除了IP地址'
尝试以下代码
// Page Object
this.popupToastIP = element(by.className('toast-success toast ng-trigger ng-trigger-flyInOut'));
// Test Spec
browser.wait(EC.visibilityOf(publisher_whitelist_page.popupToastIP),5000);
expect(publisher_whitelist_page.popupToastIP.getText()).toEqual('Ip address removed'));
答案 1 :(得分:0)
所以问题可能是因为bind
文件下没有Protractor.js
。
在将测试用例写入此类文件之前,您必须提供bind
的定义。
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof fNOP
? this
: oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
};
if (this.prototype) {
// Function.prototype doesn't have a prototype property
fNOP.prototype = this.prototype;
}
fBound.prototype = new fNOP();
return fBound;
}; }