[英]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.