2013-10-21 62 views
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)处的索引不断变为随机数。我如何处理它一般?

请帮忙。

+0

点击后你需要做什么? –

+0

这是一个asp页面吗?或纯html? –

+0

单击添加后,在一个空间添加,我工作在几个用户界面的东西,然后再次重复其他文本的点击动作。我不确定如何知道这是否是一个asp页面。 – user1771980

回答

1

不要在HTML标记中混合引号。 id:不起作用。 <td> s应该很少是空的。 Add按钮应该是一个按钮,而不是一个<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

一旦找到解决添加按钮的问题,并找出表单的ID来自哪里,请停止使用表格进行格式化。这是没有必要的。了解有关<form> s,<fieldset> s,<legend> s和<label> s。我怀疑你需要的* SOME_ID *部分,正文部分应可能是一个<label>,您可以使用CSS来格式化<label> S:

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

我认为你想要做的是非常相似的previous Watir question

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

假设“这是文本”是唯一的(正如你所说你想找到它的添加链接),你可以找到该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(例如一个标题行),这会在检查第二个标准时导致异常。

+0

非常感谢,这工作! – user1771980

+1

如果这解决了您的问题,您应该接受它作为答案。它有助于保持整洁。 – orde

相关问题