Impossible de trouver le champ “Nom” (Capybara::ElementNotFound)
Je suis en train d'utiliser le capybara+rspec et obtiens cette erreur: Impossible de trouver le champ "Nom" (Capybara::ElementNotFound)
Voici mon formulaire:
%h2 Sign up
= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f|
= f.error_notification
= display_base_errors resource
= f.input :name, :autofocus => true
= f.button :submit, 'Sign up', :class => 'btn-primary'
= render "devise/shared/links"
Voici mon user_steps.rb
When /^I sign up with valid user data$/ do
create_visitor
sign_up
end
def create_visitor
@visitor ||= { :name => "Test visitor"}
end
def sign_up
visit '/users/sign_up'
fill_in "Name", :with => @visitor[:name]
click_button "Sign up"
end
Quel est le problème????
Lorsqu'un élément n'est pas trouvé, il pourrait désigner que soit vous n'avez pas à écrire l'élément ou de votre test est à la recherche à la mauvaise page. Je voudrais tout d'abord vérifier la source de la page de
Baisse
bonne suggestion à propos de
thx mate est exactement mon problème!
/users/sign_up
pour voir si vous correspondait le nom ou l'id de votre test. Si c'est ça, alors je voudrais vérifier pour voir si il y a des obstructions le test pourrait avoir lors de l'atteinte d' /users/sign_up
.Baisse
save_and_open_page
juste après votre fill_in
et vous serez en mesure de voir ce que Capybara fait qu'en pense sur la page.bonne suggestion à propos de
save_and_open_page
@nmott mais devrait point que vous avez besoin de la launchy gemme dans votre Gemfile.thx mate est exactement mon problème!
OriginalL'auteur Andre Tachian | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré ce problème et a réalisé que Capybara filtrés champs cachés--mon élément appartenait à un non-onglet actif (caché) dans un environnement multi-onglet page. J'ai juste passé l' :visible arg et le mettre à false, et le tour est joué! l'élément a été trouvé.
ou
OriginalL'auteur danlee
J'ai le même problème moi-même et j'ai dû arrêter à l'aide de fill_in tous ensemble.
Ce que j'ai fait a été de remplacer toutes les occurrences de fill_in avec le code suivant :
Je suppose que vous pouvez encapsuler ce dans une méthode pour faire vos tests plus lisse
find
méthode utilisée pour la détermination de CSS?OriginalL'auteur Metareven
Il ressemble pour moi que vous êtes à la recherche pour une étiquette de champ
Name
, mais votre nom de domaine n'a pas d'étiquette, de sorte que vous aurez probablement besoin d'utiliser l'ID du champ ou le nom qui est probablement:"#{resource_name}[name]"
Aussi, comme @nmott dit dans son commentaire, vous devez essayer d'utiliser le
save_and_open_page
de sorte que vous pouvez réellement regarder la page, Cependant, être conscient que vous avez besoin de la launchy gem pour utiliser cette méthode.En outre, ce que vous pourriez découvrir que vous êtes même pas sur la page de droite. Mon problème habituel lors de l'essai d'AUTRES pages que la page d'inscription, c'est que j'ai été redirigé et ne le savait pas. Donc, après l'utilisation de
visit
, vous devez également utiliserassert_template
à assurez-vous que vous êtes sur la page de droite.OriginalL'auteur WattsInABox
Essayez de limiter votre champ d'application à partir de l'intérieur de la forme en tant que telle
OriginalL'auteur DevDude
Ok les gars, je l'ai trouvé ayant le même problème , elle est très simple :
Dans le capybara ou rspec ils ont besoin de vous, mais de "Nom" et dans votre formulaire ou l'étiquette de champ, vous devez écrire "nom" dans les petites....là vous allez fonctionne pour moi.
OriginalL'auteur user3832409
Pour moi, c'était la ligne suivante de la spécification qui est à l'origine du problème qui n'est pas le fill_in "nom" de la ligne. Il n'avait pas d'importance de savoir si ou non le nom de "Nom" ou "nom".
La prochaine click_button pour moi avait click_button "Faux Nom", ce qui n'était pas le bon nom pour le bouton, et cela ne donne pas l'erreur de dire "on peut pas cliquer sur le bouton "Faux Nom", mais plutôt donné ne pouvez pas trouver le champ "nom".
Un peu verbeux pour mon premier post sur un débordement de pile. Bas de ligne. Considérons la ligne en dessous de la ligne de donnée dans le capybara message d'erreur.
OriginalL'auteur Justin