量角器e2e测试用于分类

NNR*_*NNR 5 angularjs protractor

我正在使用量角器编写e2e测试用例.我正在尝试编写排序测试(升序,降序).这是我的HTML代码

<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>
Run Code Online (Sandbox Code Playgroud)

我们可以测试排序.如果有,怎么样?

Gir*_*tur 8

要按任何顺序测试排序,

  • 单击sortBy元素,以便元素按顺序排序.
  • 从使用排序顺序显示的列中获取元素的文本.
  • 稍后将每个元素的文本存储在一个数组中,以便稍后检查排序.
  • 下一步是将此未排序的数组复制到临时数组中并对临时数组进行排序.
  • 最后一件事是检查元素是否按照您需要的顺序排序,您可以使用expect语句进行验证.

使用Javascript sort()方法按升序reverse()检查排序并按降序检查排序.

您可以通过将元素添加到数组中来按升序测试元素的排序,然后使用已排序的数组对其进行验证.以下是如何操作的示例 -

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);
});
Run Code Online (Sandbox Code Playgroud)

类似地,您可以尝试使用其他元素来检查您的案例中按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
    });
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.