2

特定の列がテーブルに表示されているかどうかを確認する必要があります。各列には、一意の ID を持つ TH ヘッダーがあります。テーブル内の TH 要素の存在を確認する最良の方法は何ですか?

テーブルコードの例を次に示します。

<table id="attr-table">
  <thead>
    <tr>
      <th id="attr-action-col"><input type="checkbox" value="" class="attr-action-box" id="attr-action-col_box"></th>
      <th id="attr-name-col">Name<span class="ui-icon ui-icon-triangle-1-n"></span></th>
      <th id="attr-type-col"></th>
      <th id="attr-scope-col"></th>
      <th id="attr-value-col">English Value</th>
      <th id="attr-master-col">Master Value</th>
      <th id="attr-translation-col">T</th>
      <th id="attr-workflow-col">Status</th>
      <th id="attr-history-col">H</th>
    </tr>
  </thead>
<tbody>
....
</tbody></table>

ティア

4

2 に答える 2

2

th他の Watir gem で動作しない場合は、watir-webdriver で動作するはずです:

browser.th(:id, 'attr-translation-col').exists?
于 2011-05-06T10:15:35.493 に答える
1

一般的に.exists? メソッドは、特定の要素が存在するかどうかを確認する最善の方法です。true または false を返します。

browser.cell(:id, 'attr-translation-col').exists?

=-=-=-= コメントから学んだことと結果として得られた調査を反映するように編集 =-=-=-=

.cell メソッドは、Watir と Watir-Webdriver で実装が大きく異なります。これは、両者の違いに関するドキュメントには含まれていないようです。

Watir では、Watir::Containerモジュールで.cellメソッドが定義されており、 tablecellオブジェクトを返します。これにより、.cellメソッドは、Container から継承するか、 Containerをインクルードするものからほぼどこでも使用できるようになります。たとえば、IEオブジェクト。tablecellオブジェクトはElementクラスから継承されるため、 .exists?などの予想されるメソッドのほとんどにアクセスできます。

Watir-Webdriver では、.cellメソッドはWatir::CellContainerで定義されています。そのモジュールはWatir::TableRowに含まれています。つまり、(私がこれを正しく理解していると仮定して) .cellメソッドは、TableRow オブジェクト内、またはTableRowを含むか、それを継承するものからのみ使用できます。たとえば、Watir-Webdriver Browserオブジェクトを確認すると、.cellメソッドがリストされていません。Watir と同様に、tablecellオブジェクトはElementクラスから継承され、同様に.exists?にアクセスする必要があります。方法。

.cellとは対照的に、.tr、.td、.thの Watir-Webdriver メソッドはすべて (CellContainer ではなく) Watir::Containerで定義されているため、可用性が高く、通常は機能します。

この 2 つのプロジェクトの Rdoc の分析からわかることは、Watir-webdriver で実際にテーブルセル オブジェクトを手に入れることができれば、.exists を呼び出すことができるはずだということです。ただし、このメソッドをサポートするオブジェクトはほとんどないため、.cell を使用してテーブルセルを取得できる場所の数が非常に制限されている場合があります。メソッドが存在しないというエラーが表示される場合は、.exists? ではなく、.cell メソッドである可能性があります。メソッド (Watir-Webdriver が関係する場合)

于 2011-05-06T04:51:43.313 に答える