簡體   English   中英

如何使用量角器驗證兩個跨度在不同位置是否相等?

[英]How to use protractor to verify if two spans are equal in different locations?

<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);
});

請注意,與Protractor許多其他方法一樣, getText()返回需要解決的promise。 我們在這里有兩個承諾,我們需要比較它們的解析值,我們正在通過then()顯式地解析第一個,並讓expect()隱式地解析第二個。 有關更多信息,請參見: 比較兩個諾言的價值

另一種可能的方法:

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文本收集到一個數組中,並檢查數組中的所有項目是否相等

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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM