如何单击特定文本的表格单元格

时间:2013-10-21 23:16:48

标签: ruby html-table cell watir

以下是DOM详细信息:

<div id: "abc_440"
 <table class = "listtable"   >
   <tbody>
     <tr>
       <td id = "someid"   >
       <td class = 'someclass_item"> This is Text </td>
       <td class = 'someclass_button">
          < a > Add </a>
       </td>    
     </tr>
   </tbody>
 </table>
</div> 

我需要点击“添加”以查看“这是文字”中的特定文字。我必须使用带ID(abc_440)的div来定位相应的表,因为可能有这个dom布局的div。但div ID处的索引(例如440)不断变为随机数。我一般如何处理它?<​​/ p>

请帮忙。

2 个答案:

答案 0 :(得分:1)

不要在HTML标记中混合使用引号。 id:不起作用。 <td>应该很少是空的。 “添加”按钮应该是按钮,而不是<a>nchor元素。按钮仅适用于<form> s。

<form id="abc_440" action='someURI'>  <!-- The handler for the button. -->
    <table class="listtable">
        <tbody>
            <tr>
                <td id = "someid">
                    <!-- What goes here? -->
                </td>
                <td class='someclass_item'>
                    This is Text
                </td>
                <td class='someclass_button'>
                    <button name='add'>Add</button>
                </td>    
            </tr>
        </tbody>
    </table>
</form> 

您应该能够通过其name属性,添加以及表单的id属性abc_440找到该按钮。谁生成id s?

如果您遇到解决添加按钮的问题,并找出表单ID的来源,请停止使用表格进行格式化。没有必要这样做。了解<form><fieldset><legend><label> s。我怀疑你需要* some_id *部分,文本部分应该是<label>,你可以使用CSS格式化你的<label>

label {
    width: 150px;
    float: left;
}
fieldset p {
    clear: left;
}

答案 1 :(得分:1)

我认为您想要做的事与previous Watir question非常相似。

鉴于id是随机生成的,它听起来不是找到链接的好方法。您可能需要使用同一行的文本。

假设“This is Text”是唯一的(正如你所说想要找到它的Add链接),你可以找到td,转到父行然后获取链接。

b.td(:text => 'This is Text').parent.link.click

如果您需要确保文本位于第二列,则可以执行以下操作:

b.trs.find{ |tr| 
    tr.td.exists? and tr.td(:index => 1).text == 'This is Text'
}.link.click

如果您的某些行没有任何tds(例如标题行),则会添加tr.td.exists?,这会在检查第二个条件时导致异常。