获取失败:无法读取未定义的属性“绑定(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
的建议如有任何帮助,我们将不胜感激!
谢谢!
柯斯蒂
编辑
尝试添加绑定(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();
}).bind(this);
};
最佳答案
你的代码是错误的,无论用 Protractor 还是其他东西都可以。另一件事是您可以缩进您的代码以便于其他人阅读。
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) 是多余的,因为你没有在下面的 then() 中使用它的结果。
第 2 期
你没有为函数返回值,但你在测试规范中的代码要求它有返回值。
2) 你在测试规范中的代码如下,要求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'));
关于javascript - 失败 : Cannot read property 'bind' of undefined Protractor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48110503/