如何找到没有id或名称的表

时间:2011-07-01 08:18:09

标签: html-table watir

我需要找到表,然后找到tr和td,但是找到表 没有id和名称,那么如何找到表?我知道 应该使用索引,遗憾的是它不起作用。 我想要的页面中有10个表 在表格的行中找到“refesh”,可能很容易,但我 无法解决它...我不知道如何找到特定的表...,没有 id,没有名字,我怎样才能判断哪个表是我想要的。

代码的一部分:

<table cellspacing="0" border="0" style="height:63px; width:">
  <tbody>
    <tr>
      <td style=" ">
        <table cellspacing="0" border="0" style="margin-top:14px; width:112px; padding-left:15px;">
          <tbody>
            <tr>
              <td style="" rowspan="2"></td>
              <td id="tdrefresh" style="height:28px;" colspan="2">
                <div align="center" onclick="refresh(this,13652,1,1,0,0)" style="margin-bottom:15px;">
                  <div align="center" style="color:#414141;">refresh</div>
                </div>
              </td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
  </tbody>
</table>

3 个答案:

答案 0 :(得分:0)

您是否尝试过browser.cell(:id =&gt;“tdrefresh”)来定位单元格?

答案 1 :(得分:0)

如果你的真正目标是找到'刷新'单元格,那么Alastair听起来像是一个合理的答案。但请注意,事件“布线”位于单元格中div的级别,因此如果您的目标是单击“刷新”,那么您实际上需要单击的div

browser.cell(:id, "tdrefresh").div(:index, 1).click # note index would be 0 for firewatir

请注意,如果您在测试能力方面向开发人员提供了输入,则可能会建议他们将ID放在实际导致操作发生的元素级别。例如,上面有ID的单元格什么也不做,只是一个被动容器,因为'onclick'事件处于该单元格内div的级别。因此,在该div上使用ID而不是包含它的单元格会更有价值。如果是这种情况,那么您的代码变得更加简单(并且更兼容跨浏览器)。

browser.div(id, 'tdrefresh').click

否则你将需要两件事之一。

1)一些独特的东西,它可能是表格中的另一个元素或文本。 ID,因为它应该在页面中是唯一的(不包括帧中的内容)是一个很好的选择,如果它存在,否则可能需要其他属性的组合一些潜在的例子可能是

browser.cell(:id, "tdrefresh").parent.parent.parent #parents are row, tbody, table respectively
browser.cell(:text, "refresh").parent.parent.parent  #will need to combine with index of text occurs in more than one cell) 

browser.table(:text, /refresh/)  # not likely to work well with nested tables

2)一些外部容器,如div或span,它封装了表,您可以通过唯一属性或属性组合来识别。 (由于您在示例中没有提供表格标记以外的任何内容,因此无法提出任何建议。

答案 2 :(得分:0)

Alastair和Chuck van der Linden 谢谢你的回答,真有帮助。我试过这段代码:ie.div(:text =&gt;“refresf”,:index =&gt; 2).click, 现在好了。我仍然用你的答案来验证这个问题。非常感谢你,你给我更多的想法来解决这个问题。