element(by.binding(' ...'),getText()获取整个文本块而不是仅获取元素

时间:2014-12-28 16:45:22

标签: angularjs selenium selenium-webdriver protractor

我正在使用Protractor测试我的AngularJS应用程序的{{price}}{{getAdditionalKm}}的结果。这是我要测试的HTML的一部分:

<h1>{{ price(distance, time, time_standing, airport) | currency }}</h1>

<p>Preis im Detail:<p>
    ...
    <b>Distanz</b><br>
    {{ getFreeKm( time) }} Freikilometer<br>
    {{ getAdditionalKm(distance, time) }} km a {{ fee_additionalkm | currency }} Zusätzlicher Kilometer Preis = {{ getFee_additionalKm(distance, time) | currency }} Kilometer Preis<br>
    ...

在我的量角器情景中,我运行expect(element(by.binding('price')).getText()).toEqual('20,30 €');按预期工作,只得到价格('20 .30€')。

但是,运行expect(element(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吗?

1 个答案:

答案 0 :(得分:3)

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