以下是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>
请帮忙。
答案 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?
,这会在检查第二个条件时导致异常。