Je voulais faire trouver par class_name
et retourner le dernier élément parmi tous les éléments.
En jquery, nous pouvons écrire quelque chose comme ci-dessous mais cela ne semble pas fonctionner en capybara
find(".delete:last")
Si vous utilisez le pilote webkit
, vous pouvez écrire quelque chose comme:
find(".delete:last-child")
En capybara, vous pouvez obtenir le dernier élément en utilisant ci-dessous -
all(:css, ".delete").last
Y at-il une alternative à ci-dessus?
J'ai eu le même problème et j'ai fini par utiliser cette méthode dans Capybara 2.4.
all('.delete').last
S'appuyant sur les réponses @Sharagoz et les commentaires de @ tgf à propos de tout (contrairement à find) sans attendre la fin asynchrone, cette combinaison semble fonctionner pour moi:
wait_for_ajax
all('.selector').last
Avec ceci ajouté à rspec/capybara:
module RspecFeatureHelpers
def wait_for_ajax
Timeout.timeout(Capybara.default_max_wait_time) do
loop do
active = page.evaluate_script('jQuery.active')
break if active == 0
end
end
end
end