我正在使用AngularJs 1.6和量角器进行e2e测试。
我的 HTML 模板中有以下代码
<h1>{{exercise.a}} * {{exercise.b}}</h1>
然后在量角器中,我正在测试页面并希望获取该绑定的值。我愿意
element(by.binding('exercise.a')).getText().then(console.log)
结果是exercise.a
和exercise.b
的组合,即 '9 * 2'
虽然我希望结果是'9'
.当我尝试获取exercise.b
的值时,我得到完全相同的结果,即 '9 * 2'
虽然我期待'2'
.
我花了一段时间才找到解决方法。在我修改我的代码后,它开始正常工作
<h1><span>{{exercise.a}}</span> * <span>{{exercise.b}}</span></h1>
似乎有些东西将两个绑定组合为一个。
任何人都可以解释为什么会发生这种情况以及如何在没有解决方法的情况下使其工作。
我了解,Angular 将您的h1
标签与观察者附加到exercise.a
和excercise.b
。原始绑定消失了,因为 h1 标签的内部主体被文本9 * 2
替换。
然而,Angular 将插值函数与观察者一起重新列出,以便当它们中的任何一个发生变化时,它将重新计算新值。
也就是说,这里的两个绑定都指向 h1 的主体,在您的情况下是 9 * 2
.将它们分开的唯一方法是使用包装元素(在您的示例中为 span(或使用ng-bind
但它同样需要两个元素。