我有一个自动化场景,其中有2个阵列各有10个网络链接,预期结果是比较两个数组内容并验证10个中的一些(非固定数字)是否不同。
我尝试了下面的方法,我使用expect比较两个数组:
describe('testing', function() {
var index = 'not found';
var text1 = [];
var text2 = [];
it('push elements', function() {
browser.ignoreSynchronization = true;
browser.get('https://www.w3schools.com/angular/');
browser.sleep(9000).then(function(){
});
var elm = element(by.id('leftmenuinner')).all(By.css('[target="_top"]'));
elm.count().then(function(count) {
pushToArray1(0, count, elm);
})
element(by.xpath(".//*[@id='topnav']/div/div[1]/a[5]")).click();
});
browser.sleep(9000).then(function(){
});
it('push elements', function() {
var elm = element(by.id('leftmenuinner')).all(By.css('[target="_top"]'));
elm.count().then(function(count) {
pushToArray2(0, count, elm);
})
})
it('Comparison of the array contents', function() {
expect(text1).not.toEqual(text2);
});
function pushToArray1(i, max, elm) {
if (i < max) {
elm.get(i).getText().then(function(tmpText) {
console.log(tmpText);
text1.push(tmpText);
})
pushToArray1(i + 1, max, elm);
}
}
function pushToArray2(i, max, elm) {
if (i < max) {
elm.get(i).getText().then(function(tmpText) {
console.log(tmpText);
text1.push(tmpText);
})
pushToArray2(i + 1, max, elm);
}
}
});
但缺点是这个测试用例将在两个场景中传递,即:
1. If the both array contents are different
2. If both the array elements are exactly similar but the order is jumbled.
i.e if array1 contains [sam,tom,jam,sil] and array2 contains[tom,jam,sil,sam]
在这种情况下2我希望测试用例失败,因为数组元素相同
更新*************************** 更确切地说: 案例1:
var text1 = ['sam','tom','jam','sil'];
var text2 = ['tom','jam','sil','sam'];
案例2:
var text1 = ['sam','tom','jam','sil'];
var text2 = ['tom','jam','sil','ronnie'];
情况1中的数组比较需要通过&amp;案例2需要失败
答案 0 :(得分:1)
当你比较索引时,你不能把它们放在那样的期望中 它们将被视为文本,由于订单不正确,因此将被视为不相等。
我不确定是否有特定的方法,但我尝试为您的问题创建一个函数:
describe('test', function() {
var text1 = ['sam','tom','jam','sil'];
var text2 = ['tom','jam','sil','sam'];
it('should...', function() {
blnSimilar = true
compareArray(0, text1, 0, text2); //it compares value in text1 >> text2
compareArray(0, text2, 0, text1); //it compares value in text2 >> text1
expect(blnSimilar).toBe(true);
})
var blnSimilar;
function compareArray(i, arr1, j, arr2) {
if (i < arr1.length) {
if (j < arr2.length) {
if (arr1[i] == arr2[j]) {
compareArray(i + 1, arr1, 0, arr2)
} else {
compareArray(i, arr1, j + 1, arr2)
}
} else {
blnSimilar = false;
}
}
}
});
如果text1和text2的值如下,blnSimilar
将变为false
:
var text1 = ['sam','tom','jam'];
var text2 = ['tom','jam','sil','sam'];
或
var text1 = ['sam','tom','jam','sil'];
var text2 = ['tom','sil','sam'];
希望它能回答你的问题。
答案 1 :(得分:0)
describe('testing', function() {
var index = 'not found';
var text1 = [];
var text2 = [];
it('push elements', function() {
browser.ignoreSynchronization = true;
browser.get('https://www.w3schools.com/angular/');
browser.sleep(9000).then(function(){
});
var elm = element(by.id('leftmenuinner')).all(By.css('[target="_top"]'));
elm.count().then(function(count) {
pushToArray1(0, count, elm);
})
element(by.xpath(".//*[@id='topnav']/div/div[1]/a[5]")).click();
});
browser.sleep(9000).then(function(){
});
it('push elements', function() {
var elm = element(by.id('leftmenuinner')).all(By.css('[target="_top"]'));
elm.count().then(function(count) {
pushToArray2(0, count, elm);
})
})
it('Comparison of the array contents', function() {
console.log('Text via global defined variable text1 is ' + text1);
blnSimilar = true
compareArray(0, text1, 0, text2); //it compares value in text1 >> text2
compareArray(0, text2, 0, text1); //it compares value in text2 >> text1
expect(blnSimilar).not.toBe(true);
});
function pushToArray1(i, max, elm) {
if (i < max) {
elm.get(i).getText().then(function(tmpText) {
console.log(tmpText);
text1.push(tmpText);
})
pushToArray1(i + 1, max, elm);
}
}
var blnSimilar;
function compareArray(i, arr1, j, arr2) {
if (i < arr1.length) {
if (j < arr2.length) {
if (arr1[i] == arr2[j]) {
compareArray(i + 1, arr1, 0, arr2)
} else {
compareArray(i, arr1, j + 1, arr2)
}
} else {
blnSimilar = false;
}
}
}
});