【问题标题】:Accessing table TH element using WATIR使用 WATIR 访问表 TH 元素
【发布时间】:2011-07-26 08:04:48
【问题描述】:

我需要检查某个列是否显示在表格中。 每列都有一个带有唯一 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

【问题讨论】:

    标签: watir firewatir watir-webdriver


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      .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 em>(相对于 CellContainer),因此具有高可用性并且通常可以工作。

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

      【讨论】:

      • browser.cell 会拾取标题 TH 单元格吗?
      • 刚刚在 IRB 中尝试过似乎返回 true,即使它不在页面上,除非我有面部手掌时刻。
      • 据我所知 .cell 匹配 TH 和 TD 标签,所以应该可以工作。没有办法.exists?如果找不到元素,应该返回 true,如果是这样,我们有一个讨厌的错误您尝试的 ID 值在页面上是唯一的,对吗?对于“错误”测试,您使用了页面上任何地方都不存在的 ID,例如“DavesNotHereMan”,对吗?
      • 我会在星期一回到办公室再检查一次并通知您。
      • 在 webdriver 中试过这个,$browser.cell(:id => removedCol).exists?我收到了这个错误; NoMethodError:#<:browser:0x1310a64> 的未定义方法“单元格”
      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多