在量角器的文档中,我看到以下示例:
describe('by model', function() {
it('should find an element by text input model', function() {
var username = element(by.model('username'));
username.clear();
username.sendKeys('Jane Doe');
var name = element(by.binding('username'));
expect(name.getText()).toEqual('Jane Doe');
});
Run Code Online (Sandbox Code Playgroud)
这里显而易见的是你可以使用"by.model"在输入框中设置值,但是如果你想看一个输入框并看看里面有什么,你需要使用"by.binding".
我有一组代码(总结)我做的:
element(by.model('risk.name')).sendKeys('A value');
expect(element(by.model('risk.name')).getText()).toEqual('A value');
Run Code Online (Sandbox Code Playgroud)
(在我的实际代码中,我保存实体,然后在编辑模式下回到它,我正在检查我的值实际上已保存.但它仍然归结为同样的事情,这个示例代码给出了同样的问题).
这给了我一个错误:
Error: Expected '' to equal 'A value'.
Run Code Online (Sandbox Code Playgroud)
从理论上讲,按照文档中的示例,我可以做:
element(by.model('risk.name')).sendKeys('A value');
expect(element(by.binding('risk.name)).getText()).toEqual('A value');
Run Code Online (Sandbox Code Playgroud)
但是by.binding似乎不像完全限定的模型,我得到一个错误:
Error: No element found using locator: by.binding("risk.name")
Run Code Online (Sandbox Code Playgroud)
如果我这样做,它确实有效(经过时尚):
element(by.model('risk.name')).sendKeys('A value');
expect(element(by.binding('name')).getText()).toEqual('A value');
Run Code Online (Sandbox Code Playgroud)
这会找到一个元素,但也会发出警告,我有多个与'name'匹配的元素.不幸的是,它选择的那个不是正确的.
那么,有两个问题:
编辑:
我也尝试过vdrulerz建议的解决方案,我修改了代码如下:
element(by.model('risk.name')).getText().then(function(text) {
console.log(text);
expect(text).toEqual('A risk name');
});
Run Code Online (Sandbox Code Playgroud)
console.log返回一个空值(不是一个promise或一个对象),expect没有给出消息:
Expected '' to equal …Run Code Online (Sandbox Code Playgroud)