我正在尝试使用capybara在以下HTML结构中选择td.col_4
,但到目前为止无济于事,所以想看看是否有人可以指出我正确的方向
<div id="potentialResults">
<div class="result">
<table class="report">
<tbody>
<tr>
<td class="col_1">
<img original-title="Sources : Telephone Directory">
<a href="#"><u>Name 1</u></a>
</td>
<td class="col_2"></td>
<td class="col_3"></td>
<td class="col_4">Address 1</td>
</tr>
</tbody>
</table>
</div>
<div class="result">
<table class="report">
<tbody>
<tr>
<td class="col_1">
<img original-title="Sources : Telephone Directory">
<a href="#"><u>Name 2</u></a>
</td>
<td class="col_2"></td>
<td class="col_3"></td>
<td class="col_4">Address 2</td>
</tr>
</tbody>
</table>
</div>
</div>
所以目前要为address 1
获取Name 1
的文字
page.find("#potentialResults > .result > .report > tbody > tr > td.col_1 > a", text: "Name 1", match: :first).find('td.col_4').text
但我似乎正在努力获得相同的地址,但使用img data-attribute作为我的标识符
page.find("#potentialResults > .result > .report > tbody > tr > td.col_1 > img[original-title='Sources : Telephone Directory'] + td.col_4", match: :first).text
但td.col_4
在这个例子中并不完全相邻吗?
在规定必须是第一场比赛时,我怎样才能获得该文本。
由于
答案 0 :(得分:0)
你传给你的发现者的css太漫长了。它可以缩短而不会产生模棱两可的结果。
如果您只想从td.col_4获取文本,请执行以下操作:
find('#potentialResults .col_4').text
如果你想要“名字1”的地址,你需要先找到那个元素,然后通过几个级别遍历父级,然后找回你的方式。这是因为您正在寻找的元素是兄弟姐妹,而Capybara并没有真正提供一种简单的方法来找到它们:
find('#potentialResults .col_1 a', :text => 'Name 1').find(:xpath, '../../..').find('.col_4').text