<span ng-bind="locations.selectedCount" class="ng-binding">1005</span>

<span ng-bind="locations.selectedCount" class="ng-binding">1005</span>


当一个跨度在标签下而另一个跨度在不同位置的标签下时,我如何通过量角器来验证这两个跨度的值相同?

它使用“等于”元素吗?

最佳答案

一个简单的选择是找到两个跨度并比较文本:

var firstSpan = element(by.css("a.showld")).element(by.binding("locations.selectedCount")),
    secondSpan = element(by.css('label[key="search.selectedLocations"]')).element(by.binding("locations.selectedCount"));

firstSpan.getText().then(function (firstText) {
    var secondText = secondSpan.getText();
    expect(secondText).toEqual(firstText);
});


请注意,getText()Protractor中的许多其他方法一样,返回需要解决的promise。我们在这里有两个承诺,我们需要比较它们的解析值,我们正在通过then()显式解析第一个,并让expect()隐式解析第二个。有关更多信息,请参见:Comparing values of two promises

另一种可能的方法:

var spans = element.all(by.binding("locations.selectedCount"));
spans.first().getText().then(function (firstText) {
    var lastText = spans.last().getText();
    expect(lastText).toEqual(firstText);
});


尽管这不是很可扩展,并且可能仅适合2个元素。



更具扩展性的解决方案将涉及使用map()Array.reduce()。让我们将所有span文本收集到一个数组中,并检查all the items in the array are equal是否:

var spans = element.all(by.binding("locations.selectedCount"));

spans.map(function (span) {
    return span.getText();
}).then(function (texts) {
    var allTextsAreTheSame = texts.reduce(function(a, b) {
        return (a === b) ? a: false;
    });
    expect(allTextsAreTheSame).toBe(true);
});

关于javascript - 如何使用 Protractor 验证两个跨度在不同位置是否相等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31685955/

10-10 04:07