根据文档,有一个叫.exactBinding()的方法,可以非常准确地选择一个元素ProtractorBy.prototype.exactBinding
所以在
的情况下<span>{{ person.name }}</span>
您可以成功测试:
expect(element(by.exactBinding('person.name')).isPresent()).toBe(true);
expect(element(by.exactBinding('person')).isPresent()).toBe(false);
然而,但是你有这样的绑定的情况怎么样:
<div>Showing {{foo.foo}} of {{foo.bar}}</div>
在这种情况下,即使你使用了exactBinding()选择器,模型也是1和2:
expect(element(by.exactBinding('foo.foo')).getText()).toEqual('1');
该测试总是会失败,因为此选择器的getText()值为:
element(by.exactBinding('foo.foo'))
实际上是“显示1中的2”,而不仅仅是“1”,就像我想要的那样。
快速而肮脏的解决方法是将每个绑定包装在这样的元素中:
<div>Showing <span>{{foo.foo}}</span> of <span>{{foo.bar}}</span></div>
哪个工作正常,但这是额外无用的标记!我找不到任何其他方式来选择。使用ng-bind将绑定转换为元素也可以,但是修复也是如此。所以问题是,有没有办法只选择绑定?没有为我的页面添加无用的标记?这真的很有用......
答案 0 :(得分:1)
我认为你不能,这个想法被用作寻找元素的定位器,所以如果它不是你无法使用的元素,你可以使用.toMatch()来解决这个问题。尝试找到至少一个结果,否则你必须说它将等于所有预期的文本“显示1的2”。