Angularjs 元素(通过.binding(';…';),getText()获取整个文本块,而不仅仅是元素

Angularjs 元素(通过.binding(';…';),getText()获取整个文本块,而不仅仅是元素,angularjs,selenium,selenium-webdriver,protractor,Angularjs,Selenium,Selenium Webdriver,Protractor,我正在用量角器测试AngularJS应用程序的{{price}和{{getAdditionalKm}}结果。下面是我要测试的html的一部分: {{价格(距离、时间、时间、机场){货币} Preis im详细信息: ... Distanz {{getFreeKm(时间)}Freikilometer {{getAdditionalKm(距离、时间)}km a{{fee|additionalkm |货币}}Zusätzlicher公里数Preis={{getFee|additionalkm(距离、时

我正在用量角器测试AngularJS应用程序的
{{price}
{{getAdditionalKm}}
结果。下面是我要测试的html的一部分:

{{价格(距离、时间、时间、机场){货币}
Preis im详细信息:
...
Distanz
{{getFreeKm(时间)}Freikilometer
{{getAdditionalKm(距离、时间)}km a{{fee|additionalkm |货币}}Zusätzlicher公里数Preis={{getFee|additionalkm(距离、时间)|货币}公里数Preis
...
在我的量角器场景中,我运行
expect(element(by.binding('price')).getText()).toEqual('20,30€');
,它按预期工作,只获取价格('20.30€'))

但是,运行
expect(元素(by.binding('getAdditionalKm')).getText()).toEqual('50');
会获取
{price}
元素之后的所有内容。这是运行量角器测试时的输出:

...
Failures:

  1) c2g test get price with 50 additional kms
   Message:
     Expected 'Zeit
0 Tage a 59,00 ? = 0,00 ?
0 Stunden a 14,90 ? = 0,00 ?
20 Minuten a 0,29 ? = 5,80 ?
Distanz
50 Freikilometer
50 km a 0,29 ? Zusätzlicher Kilometer Preis = 14,50 ? Kilometer Preis
Sonstiges
0,00 ? Zeit stehend
0,00 ? Flughafenpauschale' to equal '50'.
...

为什么量角器不能只选择
{{getAdditionalKm}
元素?我需要更改html吗?

getAdditionalKm
不在它自己的元素中,因此包含它的整个元素都会被选中。而不是使用
.toEqual
.toContain
进行比较。如果可能,您还可以将
getAdditionalKm
绑定放在它自己的元素中。

很好尽管在这种情况下,
toContain
并不可靠。显然,放置
getAdditionalKm
是更好的解决方案。div可以工作,但会破坏布局。您知道任何不会损害布局的html元素吗?@mles您可以尝试
span
或任何元素,并使用CSS防止其影响布局。