Самое плохое во «второй» ссылке - когда-нибудь она может стать третьей, первой или даже двадцать пятой. Таким образом, обзор с блоком within
- лучший способ. Пример:
within(".comment") do
click_on("View")
end
Но если трудно указать ссылку с областью действия within
(что иногда так и есть), я думаю, что способ щелкнуть по второй ссылке с определенным текстом:
find(:xpath, "(//a[text()='View'])[2]").click
В более поздних версиях капибары (например, 2.0.2
) и click_on 'View' и click_link 'View' вызовет неоднозначную ошибку соответствия:
Failure/Error: click_on 'View'
Capybara::Ambiguous:
Ambiguous match, found 2 elements matching link or button "View"
Так что это не сработает, даже если вы хотите щелкнуть первую ссылку (или если какая-либо ссылка будет в порядке, что в моем случае).
Насколько я понимаю, это сделано для того, чтобы заставить людей писать более конкретные тесты, по которым щелкают конкретные ссылки.
Определенно может быть сложно отладить код, если вы случайно разместили две или более ссылки с одинаковым текстом и попытались увидеть, что происходит. Хорошо полагаться на то, что вряд ли изменится, и указание ссылки с помощью блока within
является хорошим способом сделать это.