首页 > 解决方案 > 如何使用量角器在表格中定位单元格

问题描述

我想使用量角器在桌子上找到航班号(11302)。然后单击插入同一行的按钮。

<kendo-grid-list role="presentation" class="k-grid-container ng-star-inserted">
  <!---->
  <div role="presentation" tabindex="-1" class="k-grid-content k-virtual-content">
    <div role="presentation" class="k-grid-table-wrap">
      <table role="presentation" class="k-grid-table">
        <colgroup kendogridcolgroup="" role="presentation">
          <col style="width: 40px;" class="ng-star-inserted">
          <col style="width: 90px;" class="ng-star-inserted">
          <col style="width: 120px;" class="ng-star-inserted">
          <col style="width: 120px;" class="ng-star-inserted">
          <col style="width: 50px;" class="ng-star-inserted">
          <col style="width: 100px;" class="ng-star-inserted">
        </colgroup>
        <tbody kendogridtablebody="" role="presentation">

          <tr kendogridlogicalrow="" data-kendo-grid-item-index="0" role="row" class="ng-star-inserted" style="">
            <td kendogridcell="" kendogridlogicalcell="" role="gridcell" aria-selected="false" data-kendo-grid-column-index="0" colspan="1" aria-colindex="1" class="ng-star-inserted">
              <button _ngcontent-wqs-c341="" kendobutton="" look="flat" icon="plus-circle" class="k-button-icon k-button k-primary k-flat ng-star-inserted" role="button" aria-disabled="false" aria-pressed="false" dir="ltr"><span _ngcontent-wqs-c341="" class="k-icon k-i-plus-circle ng-star-inserted" role="presentation"></span></button>
            </td>
            <td kendogridcell="" kendogridlogicalcell="" role="gridcell" aria-selected="false" data-kendo-grid-column-index="1" colspan="1" aria-colindex="2" class="ng-star-inserted">
              <a _ngcontent-wqs-c341="" href="/admin/manifest-detail/27513" class="ng-star-inserted"> 11302</a>
              <br _ngcontent-wqs-c341="" class="ng-star-inserted">
              <span _ngcontent-wqs-c341="" title="" class="ng-star-inserted">Open </span>
            </td>
            <td kendogridcell="" kendogridlogicalcell="" role="gridcell" aria-selected="false" data-kendo-grid-column-index="2" colspan="1" aria-colindex="3" class="ng-star-inserted">
              07:00 AM<br _ngcontent-wqs-c341="" class="ng-star-inserted"> Midland, MI
            </td>

我尝试使用 by.css 来定位元素,如下图所示

let temp2 = element(by.css(".k-grid-container .data-kendo-grid-item-index='0' .data-kendo-grid-column-index='1'")).element(by.tagName('a'));

到目前为止,我无法找到航班号所在的单元格,而不是单独单击按钮。

标签: javascripthtmlangularprotractor

解决方案


我尝试了另一种方法,这是代码

element.all(by.tagName('tbody')).first().then(function(_table) {
  return _table.element(by.tagName('tr')).filter(function(_tableRow) {
    return _tableRow.element.all(by.tagName('td')).get(1).then(function(_tableCell) {
      let tmp = _tableCell.element(by.tagName('a'));
      return expect(tmp.getText()).toContain("11302");
    });
  }).first().element(by.tagName('button')).click();
});

我在页面上总共有 3 个表格('tbody'),包含航班号的单元格的索引始终为 1。但它失败了,报告是

  • 失败:protractor_1.element.all(...).first(...).then 不是函数

推荐阅读