0

以下是 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)不断更改为随机数。我一般如何处理它?

请帮忙。

4

2 回答 2

1

不要在 HTML 标签中混用引号。 id:不起作用。 <td>s 应该很少为空。添加按钮应该是一个按钮,而不是一个<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属性add以及通过表单的id属性 abc_440 找到该按钮。谁生成ids?

一旦您解决了找到添加按钮的问题,并弄清楚表单的 id 来自哪里,请停止使用表格进行格式化。没有必要这样做。了解<form>s、<fieldset>s、<legend>s 和<label>s。我怀疑你需要 *some_id* 部分,文本部分可能应该是 a <label>,你可以使用 CSS 将你<label>的 s 格式化为:

label {
    width: 150px;
    float: left;
}
fieldset p {
    clear: left;
}
于 2013-10-21T23:40:37.520 回答
1

我认为您想要做的与之前的 Watir 问题非常相似。

鉴于 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

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

于 2013-10-22T00:41:07.193 回答