量角器 - 如何获得第一个或最后一个CHILD值

时间:2015-06-09 12:24:52

标签: angularjs testing protractor

我有一些看起来像这样的HTML:

<div class="label label-primary ng-scope" ng-if="vehicle.manufacturerCode">
   <strong class="ng-binding">AUDI</strong>
   <small class="ng-binding">[00]</small>
   <span class="btn btn-flat" ng-click="axCarSearch.removeIdentification(1, $event)">
      <span class="glyphicon glyphicon-remove-sign"></span>
   </span>
</div>

从这个HTML我需要获得第一个或最后一个ng-binding的值。 我可以想象我可以通过以下方式获得vehicle.manufacturerCode:

element(by.css('[ng-if="vehicle.manufacturerCode"]'));

但不确定如何更深入并获得字符串“AUDI”或字符串“[00]”来比较它们是否相等。

看起来像是:

it('Compare results ', function() {
    var manufacturer = element(by.css('[ng-if="vehicle.manufacturerCode"]')).child[0];
    expect(manufacture.toEqual('AUDI');
});

2 个答案:

答案 0 :(得分:1)

您提供的HTML建议可以使用by.binding个定位器,但您还没有提供实际的绑定 - 您可以在非呈现的HTML源代码中看到它们,例如:应该是如此:

<strong class="ng-binding">{{ vehicle.manufacturer }}</strong>

在这种情况下,您可以通过这种方式找到所需的元素:

var div = element(by.css('[ng-if="vehicle.manufacturerCode"]'));

var name = div.element(by.binding("vehicle.manufacturer"));
var code = div.element(by.binding("vehicle.manufacturerCode"));

expect(name.getText()).toEqual("AUDI");
expect(code.getText()).toEqual("[00]");    

根据您提供的内容,您可以链接element来电并依赖标签名称:

var div = element(by.css('[ng-if="vehicle.manufacturerCode"]'));

var strong = div.element(by.tagName("strong"));
var small = div.element(by.tagName("small"));

expect(strong.getText()).toEqual("AUDI");
expect(small.getText()).toEqual("[00]");

请注意,通常,依赖ng-if和标记名称并不十分可靠。

答案 1 :(得分:0)

$('.label-primary').children().each(function () {
    //Use value here using $this
});

使用每个循环迭代div的所有子项。