L'en-tête de la table de test de Protractor e2e et les balises <tr>, <td>

J'utilise le tableau ci-dessous. Dans ce cas, je veux tester chaque étiquette (th, td tags), Texte dans ces balises et compte de ce texte. Extrait HTML

<table class="table table-striped"> <tbody> <tr> <th><b><a ng-href="" ng-click="predicate='id';reverse=!reverse">Patient Id</a></b></th> <th><b><a ng-href="" ng-click="predicate='accountNumber';reverse=!reverse" class="">Account Number</a></b></th> <th><b><a ng-href="" ng-click="predicate='title';reverse=!reverse">Title</a></b></th> <th><b><a ng-href="" ng-click="predicate='firstName';reverse=!reverse">First Name</a></b></th> <th><b><a ng-href="" ng-click="predicate='lastName';reverse=!reverse">Last Name</a></b></th> <th><b><a ng-href="" ng-click="predicate='middleName';reverse=!reverse">Middle Name</a></b></th> <th><b><a ng-href="" ng-click="predicate='sex';reverse=!reverse">Sex</a></b></th> <th><b><a ng-href="" ng-click="predicate='dob';reverse=!reverse">Dob</a></b></th> </tr> <tr ng-repeat="listItem in filteredListItems | orderBy:predicate:reverse" ng-class="rowClass(listItem)" class="ng-scope"> <td class="ng-binding">10</td> <td class="ng-binding">Tam</td> <td class="ng-binding">Mr.</td> <td class="ng-binding">Tam</td> <td class="ng-binding">Vinh</td> <td class="ng-binding">J.</td> <td class="ng-binding">F</td> <td class="ng-binding"></td> <td><a ng-href="#/detailView/patients/10" href="#/detailView/patients/10">Details</a></td> <td><button ng-click="deleteRecord(10)" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove"></span> Delete</button></td> </tr> <tr ng-repeat="listItem in filteredListItems | orderBy:predicate:reverse" ng-class="rowClass(listItem)" class="ng-scope"> <td class="ng-binding">12</td> <td class="ng-binding">Tam12</td> <td class="ng-binding">Mr.</td> <td class="ng-binding">Steve</td> <td class="ng-binding">John</td> <td class="ng-binding">A.</td> <td class="ng-binding">F</td> <td class="ng-binding"></td> <td><a ng-href="#/detailView/patients/12" href="#/detailView/patients/12">Details</a></td> <td><button ng-click="deleteRecord(12)" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove"></span> Delete</button></td> </tr> </tbody> </table> 

J'ai essayé comme ça, mais ça ne fonctionne pas.

 it('Patient Page text testing', function(){ var table = element(by.css('.table')); var firsttag = table.element(by.tagName('tbody')); var secondtag = firsttag.all(by.tagName('tr')).get(0); var thirdtag = secondtag.all(by.tagName('th')).get(0); expect(element(by.xpath('//b/a')).getText()).toEqual('Patient Id'); var thirdtag = secondtag.all(by.tagName('th')).get(1); expect(element(by.xpath('//b/a')).getText()).toEqual('Account Number'); }); 

Dans le test ci-dessus, les attentes fonctionnent, mais la seconde attente ne fonctionne pas.

Erreur :

 Message: Expected 'Patient Id' to equal 'Account Number'. 

Toujours dans la seconde attente, il s'attend à ce que «Id patient». Je ne sais pas où j'ai mal.

Au lieu de cela, trouvez tous les en-têtes en utilisant element.all() et utilisez map() pour affirmer la liste en une seule fois:

 var headers = element.all(by.css('table.table th a')).map(function(elm) { return elm.getText(); }); expect(headers).toEqual([ "Patient Id", "Account Number", "Title", "First Name", "Last Name", "Middle Name", "Sex", "Dob" ]);