С HTML
<a href="/room/grade3/10036" class="btn" title="Delete">
<i class="icon-delete"></i>
</a>
Есть несколько способов Клика - click_link будет соответствовать на ид, текст или названии ссылки, чтобы просто нажмите на ссылке вы могли бы сделать
click_link('Delete', href: "/room/grade3/#{@student.id}")
Если вам нужно нажать именно на < я> элемент, который вы могли бы сделать что-либо из
find_link('Delete', href: "/room/grade3/#{@student.id}").find('.icon-delete').click
find("a[href ='/room/grade3/#{@student.id}'] i.icon-delete").click
Примечание: даже с этими исправлениями ваш тест, вероятно, не удастся. Это связано с тем, что вы используете совпадение change
, и ваш блок ничего не делает, чтобы убедиться, что действие выполнено до того, как совпадение проверки снова проверит счетчик учащихся. Это связано с тем, что при использовании любого из поддерживающих JS драйверов click
просто нажимает кнопку, он не знает о каких-либо побочных эффектах для ожидания и возвращается к тесту, пока приложение отключается и начинает обрабатывать любое поведение, вызванное нажатием кнопки. Чтобы исправить это ваш тест должен был бы быть что-то вроде
expect {
... Do whatever clicking of link/button ...
expect(page).to have_text("Student deleted") # whatever message is shown once the student is actually deleted or an assertion for other visible change
}.to change(Student, :count).by(-1)
Таким образом, код будет задержка, пока студент фактически не удаляется, а change
согласовани могут получить рассчитывать Студента снова.
найти не принимает 2 строки - показать код HTML, который вы пытаетесь нажать –
– jerrytom