0

以下の表のセルの数を取得できません。テーブル本体でのみカウントを取得したい.これを達成するのを手伝ってください-カウントを取得しようとしています-

<td class="ng-binding ng-scope" ng-if="paymentDetails.responseObject[0].fee_amount > 0">$0.90</td>

これを達成する方法を教えてください。ありがとう!!

<div class="show-for-large-up">
  <table>
    <thead>
      <tr>
        <!-- ngIf: paymentDetails.responseObject[0].fee_amount > 0 -->
        <th class="ng-binding ng-scope" ng-if="paymentDetails.responseObject[0].fee_amount > 0" ng-bind-html="receiptTemplate.paymentFee" width="300">Payment Fee</th>
        <!-- end ngIf: paymentDetails.responseObject[0].fee_amount > 0 -->
      </tr>
    </thead>
    <tbody>
      <!-- ngRepeat: lineItem in paymentDetails.responseObject[0].schedules[0].schedule_line_items track by $index -->
      <tr class="ng-scope" ng-repeat="lineItem in paymentDetails.responseObject[0].schedules[0].schedule_line_items track by $index">
        <td class="ng-binding">$45.00</td>
        <!-- ngIf: paymentDetails.responseObject[0].fee_amount > 0 -->
        <td class="ng-binding ng-scope" ng-if="paymentDetails.responseObject[0].fee_amount > 0">$0.90</td>
        <!-- end ngIf: paymentDetails.responseObject[0].fee_amount > 0 -->
      </tr>
      <!-- end ngRepeat: lineItem in paymentDetails.responseObject[0].schedules[0].schedule_line_items track by $index -->
      <tr class="ng-scope" ng-repeat="lineItem in paymentDetails.responseObject[0].schedules[0].schedule_line_items track by $index">
        <td class="ng-binding">Jul 21, 2017</td>
        <td class="ng-binding">$0.00</td>
        <!-- ngIf: paymentDetails.responseObject[0].fee_amount > 0 -->
        <td class="ng-binding ng-scope" ng-if="paymentDetails.responseObject[0].fee_amount > 0">$1.68</td>
        <!-- end ngIf: paymentDetails.responseObject[0].fee_amount > 0 -->
      </tr>
    </tbody>
  </table>
</div>

私が試したこと-しかし、私は3としてカウントを取得します。実際には、カウントは1である必要があります

var paymentTable = $$('.show-for-large-up tr');
var row = paymentTable.$$('[ng-repeat="lineItem in paymentDetails.responseObject[0].schedules[0].schedule_line_items track by $index"]');
var cell = row.$$('[ng-if="paymentDetails.responseObject[0].fee_amount > 0"]');
var cellCount = cell.filter(function(elm) {
  return elm.count();
expect(elm.count()).toBe(1);
});

下の画像を参照してください 列支払い手数料の行数を取得しようとしています

4

1 に答える 1

1

フィルターは最初に一致する要素を取得し、カウントしないため、フィルターは機能しません。ドキュメントも参照してください

eachでこれを達成できます。一致した各要素を反復処理してから、必要なことを行います。コードは次のようになります

var count = 0;

// Get all the td's
$$('[ng-if="paymentDetails.responseObject[0].fee_amount > 0"]')
  // Walk through all the found td's
  .each((element) => {
    // Get the text of the td
    return element.getText()
      .then((text) => {
        // Add a + 1 if the text matches
        if (text === '$0.90') {
          count + 1;
        }
      });
  });

// Do the assertion
expect(count).toBe(1);

于 2017-07-23T11:59:02.193 に答える