Question webrat Remplissage automatique des champs de formulaire


J'apprends à écrire des tests avec concombre / webrat. Un de mes scénarios de test est configuré pour tester la validation du formulaire (en laissant les champs vides). Curieusement, les champs que je ne remplis pas fill_in sont définies sur le terrain name attribut. Cela ne se produit que lorsque je lance concombre, ce qui n'arrive pas lorsque vous utilisez un navigateur.

L'étape que j'utilise est simple:

When /^I submit the form$/ do
  # Not filling in the 'Name' field here
  fill_in 'Description', :with => 'This is a description'
  click_button 'Save'
end

Après avoir exécuté le scénario qui utilise l'étape ci-dessus, je peux voir que le champ de texte "Nom" est défini sur "nom" au lieu d'être vide. C’est également le cas si je remplis ce champ avec un espace vide ou nil:

fill_in 'Name', :with => ''

La forme que je teste est assez simple:

<form action="/item/create" method="post">
  <div>
    <label for="ItemName">Name</label>
    <input type="text" name="name" id="ItemName" />
  </div>
  <div>
    <label for="ItemDescription">Description</label>
    <textarea name="description" id="ItemDescription"></textarea>
  </div>
  <input type="submit" value="Save" />
</form>

Une idée de ce qui se passe?


10
2018-01-14 09:40


origine


Réponses:


Je suppose que vous utilisez Webrat avec l'adaptateur Mechanize, n'est-ce pas? Si oui, je me suis senti très frustré par le même problème. Il s’agit d’un bogue dans la façon dont Webrat transmet les valeurs des champs de formulaire à Mechanize. Vous pouvez trouver des détails et un patch ici: https://webrat.lighthouseapp.com/projects/10503/tickets/384-webrat-does-not-pass-empty-form-fields-correctly-to-mechanize

Sinon, si vous ne souhaitez pas utiliser une version corrigée de Webrat, une solution de contournement légèrement non optimale consiste plutôt à remplir_in avec whitespace ('') et à vous assurer que la validation des entrées de votre application réduit ou ignore les espaces. rempli correctement.

Malheureusement, il semble y avoir un certain nombre de problèmes comme celui-ci, qui ont contribué à des correctifs qui n'ont pas été fusionnés dans la base de code Webrat "officielle". Il y a environ un mois et demi, j'ai envoyé un e-mail à l'auteur pour lui demander s'il continuait à le faire et, dans la négative, s'il vous plaît envisager de lancer un appel à quelqu'un qui le ferait. À ce jour, je n'ai pas encore reçu de réponse.


2
2017-08-04 13:46



Une chose que vous pouvez essayer est de vous assurer que l'auto-complétion est désactivée sur ce champ (autocomplete = "off") pour voir si cela affecte le résultat.

<form action="/item/create" method="post">
  <div>
    <label for="ItemName">Name</label>
    <input type="text" name="name" id="ItemName" autocomplete="off" />
  </div>
  <div>
    <label for="ItemDescription">Description</label>
    <textarea name="description" id="ItemDescription"></textarea>
  </div>
  <input type="submit" value="Save" />
</form>

1
2018-02-03 04:02



Pouvez-vous essayer quelque chose comme ça dans l'étape?

Compte tenu du% {je remplis "nom" avec ""}

Ou mieux encore, dans l'utilisation du fichier de fonctionnalités

Étant donné que je remplis "nom avec" ".

Je suggère également de déménager à Capybara, vous pouvez faire des choses comme ceci:

https://github.com/jnicklas/capybara/issues/issue/219

Qui vous permettra de configurer des profils Firefox pour vos tests de sélénium.


0
2018-02-04 05:18