angularjs – 如何getText在量角器上的输入
在量角器的文档中,我看到以下示例:
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'); }); 这里很清楚的是,你可以使用“by.model”在输入框中设置值,但是如果你想看一个输入框,看看里面有什么,你需要使用“by.binding”。 我有一套代码,其中(总之)我做: element(by.model('risk.name')).sendKeys('A value'); expect(element(by.model('risk.name')).getText()).toEqual('A value'); (在我的实际代码中,我保存实体,然后回到它在编辑模式,我检查我的价值实际上保存了,但它仍然归结为同样的事情,这个示例代码给出了同样的问题。 这给我一个错误: Error: Expected '' to equal 'A value'. 理论上,从文档的例子,我可以改为: element(by.model('risk.name')).sendKeys('A value'); expect(element(by.binding('risk.name)).getText()).toEqual('A value'); 但是by.binding似乎不像完全限定的模型,我得到一个错误: Error: No element found using locator: by.binding("risk.name") 它做工作(一个时尚)如果我做: element(by.model('risk.name')).sendKeys('A value'); expect(element(by.binding('name')).getText()).toEqual('A value'); 这找到一个元素,但也给出一个警告,我有多个元素匹配’name’。不幸的是,它挑选的不是一个正确的。 所以,两个问题: >如果by.model能够返回一个getText(),或者有一个设计决定,它不这样做,我们需要使用by.binding? 编辑: 我也试过vdrulerz建议的解决方案,我修改代码如下: element(by.model('risk.name')).getText().then(function(text) { console.log(text); expect(text).toEqual('A risk name'); }); console.log返回一个空值(不是一个promise或一个对象),并且expect不会给出消息: Expected '' to equal 'A risk name'. 我的理解是,量角器已经补丁的期望处理承诺,所以我觉得底层的问题是getText不工作在一个字段标识通过一个模型(我可以成功getText标签和其他小部件)。 我也可以运行下面的代码,使用getAttribute而不是getText(): expect(element(by.model('risk.name')).getAttribute('autofocus')).toEqual('true'); element(by.model('risk.name')).getAttribute('autofocus').then(function(text) { console.log(text); expect(text).toEqual('true'); }); 第一部分通过 – 期望工作。第二部分也工作,建议vdrulerz的语法也是有效的,它记录’true’到控制台。我认为getText可能有缺陷?
这在量角器常见问题解答:
https://github.com/angular/protractor/blob/master/docs/faq.md#the-result-of-gettext-from-an-input-element-is-always-empty
来自输入元素的getText的结果始终为空 这是一个webdriver怪癖。元素总是具有空getText值。相反,请尝试: element.getAttribute('value') 至于问题2,是的,你应该能够使用一个完全限定名的by.binding。我怀疑你的模板实际上没有绑定到risk.name通过{{}}或ng绑定的元素。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |