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>

TIA

4

2 回答 2

2

试试th,它应该在 watir-webdriver 中工作,如果它在其他 Watir gem 中不起作用:

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

一般 . 存在吗?方法是查看给定元素是否存在的最佳选择。它返回真或假..

browser.cell(:id, 'attr-translation-col'). 存在吗?

=-=-=-= 编辑以反映通过评论和一些由此产生的调查学到的东西 =-=-=-=

.cell 方法在 Watir 与 Watir-Webdriver 中的实现方式非常不同。这似乎没有包含在关于两者之间差异的文档中。

在 Watir 中,.cell方法在Watir::Container模块中定义并返回一个tablecell对象。这使得.cell方法几乎可以在任何继承自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 方法都在Watir::Container中定义(与 CellContainer 相对),因此具有高可用性并且通常可以工作。

因此,对这两个项目的 Rdoc 的分析告诉我的是,如果您实际上可以在 Watir-webdriver 中获得一个 tablecell 对象,您应该能够调用 .exists?方法,但是您可能会发现可以使用 .cell 获得表格单元的位置数量受到高度限制,因为很少有对象支持此方法。如果您看到有关方法不存在的错误,很可能是 .cell 方法,而不是 .exists?方法(涉及 Watir-Webdriver 的地方)

于 2011-05-06T04:51:43.313 回答