Im пытаюсь выбрать td.col_4
в течение следующего HTML stucture с помощью водосвинку, но безуспешно до сих пор, так смотрел, если кто-нибудь может мне точку в правильном направленииВыбор элемента с помощью CSS и Капибара
<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-атрибут, как мой идентификатор
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
не совсем рядом в этом примере?
Как еще я смогу получить текст при условии, что он должен быть первым матчем.
Благодаря
Спасибо за ваш ответ, но не я по-прежнему работать в неоднозначные вопросы, если имя я ищу существует в нескольких местах, поэтому im использует 'match:: first' .. Я не знал, что вы можете щелкнуть между' xpath' и 'css', так что это реально удобно. В конце концов я нашел решение xpath только, но ваш ответ - пища для размышлений, спасибо – Richlewis
Я предположил, что имена будут уникальными. Вы можете использовать [сначала] (http://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Finders#first-instance_method) – Phil