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

Protractor - How to get first or last CHILD value

我有一些 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');
});
$('.label-primary').children().each(function () {
    //Use value here using $this
});

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

您提供的 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 和标签名称不太可靠。