Angularjs 分选用量角器e2e试验
我正在使用量角器编写e2e测试用例。我正在尝试编写排序测试(升序、降序)。这是我的html代码Angularjs 分选用量角器e2e试验,angularjs,protractor,Angularjs,Protractor,我正在使用量角器编写e2e测试用例。我正在尝试编写排序测试(升序、降序)。这是我的html代码 <tbody> <tr> <td> <a ng-click="sortBy('Name')" href="" style="text-decoration: none;" class=""> Name</a> </td> <td>
<tbody>
<tr>
<td>
<a ng-click="sortBy('Name')" href="" style="text-decoration: none;" class=""> Name</a>
</td>
<td>
<a ng-click="sortBy('RollNo')" href="" style="text-decoration: none;"> Roll Number</a>
</td>
<td>
<a ng-click="sortBy('subject')" href="" style="text-decoration: none;"> Subject</a>
</td>
</tr>
<tr>
<td>ANDREW, STRAUSS</td>
<td>122</td>
<td>Maths</td>
</tr>
<tr>
<td>ANDREW, STRAUSS</td>
<td>123</td>
<td>Science</td>
</tr>
</tbody>
安德鲁,施特劳斯
122
数学
安德鲁,施特劳斯
123
科学类
我们能测试一下分类吗。如果是,如何进行?以任何顺序测试排序
- 单击sortBy元素,以便按顺序对该元素进行排序
- 从按排序顺序显示的列中获取元素的文本李>
- 稍后将每个元素的文本存储在一个数组中,以便稍后检查排序李>
- 下一步是将这个未排序的数组复制到一个临时数组中,并对临时数组进行排序
- 最后一件事是检查元素是否按照您需要的顺序排序,您可以使用
语句来验证expect
sort()
方法按升序检查排序,使用reverse()
方法按降序检查排序
const cellElements = element.all(by.css(`table tbody tr td:nth-child(1)`));
const textFields = await cellElements
.map((el: ElementFinder) => el.getText()
.then((text: string) => text));
textFields.forEach((description: string, index: number) => {
if (index > 0) {
expect(descriptions[index - 1] > description).toBe(true);
}
});
您可以通过将元素添加到数组中,然后使用已排序的数组验证元素的升序排序。这是一个如何做的示例-
var sorted = [] , unSorted = [];
var ele = element.all(by.css(tbody tr td:nth-of-type(1)));
ele.each(function(eachName){
eachName.getText().then(function(name){
unSorted[i] = name;
i++;
});
}).then(function(){
//check sorting
sorted = unSorted.slice();
sorted.sort(); //use sort function of Javascript
expect(sorted).toEqual(unSorted);
});
类似地,您可以尝试使用其他元素来检查案例中的其他排序类型—按RollNo和subject排序。如果由于量角器速度快而面临异步错误问题,则可以将排序验证代码与循环链接起来
另一种方法是使用量角器的map()。我建议使用这个。这里有一个例子-
ele.map(function(eachName){
return eachName.getText().then(function(unSorted){
return unSorted;
});
}).then(function(unSorted){
var sorted = unSorted.slice();
sorted = sorted.sort(); //sort the array
expect(sorted).toEqual(unSorted); //check if both sorted and unsorted arrays are same
});
希望这能有所帮助。另一种方法是创建一个包含排序文本字段的数组,然后比较其中的值。对数据进行排序后,可以执行以下操作来测试升序
const cellElements = element.all(by.css(`table tbody tr td:nth-child(1)`));
const textFields = await cellElements
.map((el: ElementFinder) => el.getText()
.then((text: string) => text));
textFields.forEach((description: string, index: number) => {
if (index > 0) {
expect(descriptions[index - 1] > description).toBe(true);
}
});
this.Then(/^使用优先级排序升序$/,函数(回调)验证中的操作{
变量排序=[],未排序=[],i=0;
var OperationPriority=element.all(by.xpath('//table/tbody/tr//dx number box/div/input');
console.log(“count”+OperationPriority.count);
操作优先级.map((每个名称)=>{
未排序的[i]=eachName.getText();
i++;
});
sorted=unSorted.slice();
sorted.sort();
控制台日志(已排序);
console.log(未排序);
expect(已排序)。toEqual(未排序);
回调();
});代码>谢谢回复。这里我想测试单个列。比如,如果我点击学生。它应该只测试学生栏。@N123我已经在上面写了相同的答案。它只检查学生专栏。这一切都是关于使用元素和使用数组检查排序的。您也可以使用其他列来测试它。如果你不清楚答案,请告诉我。是的,我不清楚。你能给我举个例子吗。谢谢。@N123用可用于测试排序的步骤更新了答案。@GirishSortur doingvar sorted=unSorted代码>生成一个引用副本,而不是实际的数组副本,因此期望expect(已排序).toEqual(未排序)代码>将始终为真。您应该使用数组副本,使用slice(),类似于var sorted=unSorted.slice(0)代码>