2017-07-12 1 views
0

Je suis en train de tester cette page que je dois remplir un formulaire et seulement quand tous les champs sont remplis et valides, le bouton est activé cliquer, cependant, en essayant de trouver le bouton sur lequel cliquer, je reçois toujours le message que capybara était incapable de trouver le bouton ou l'élément, ou que j'essaie de le trouver. Le bouton n'a pas de nom ou d'identifiant, ce qui le rend plus difficile.Capybara ne trouve pas de bouton pour cliquer par xpath ou texte, le bouton n'a pas d'identifiant ou de nom

screenshot of the part of the code while inspecting element

<button class="btn btn--highlight _159vaYHuibqRdI3OZTALCW"> 
<!-- react-text: 182 --> 
Jetzt kaufen 
<!-- /react-text --> 
<!-- react-text: 183 --> — <!-- /react-text --> 
<!-- react-text: 184 --> 
94,01&nbsp;€ 
<!-- /react-text --> 
<span class="spinner"> 
</span></button> 

Lorsque la taille des modifications du navigateur, les modifications de texte du bouton, mais par la taille par défaut du texte du bouton est « Jetzt bestellen » et quand de plus grandes « Jetzt kaufen » façons je l'ai déjà tenté de cliquer sur ce bouton:

@browser .click_button ('Jetzt bestellen', attendez: 10)

@brows er .dans les ".btn BTN - highlight" faire @ browser.click_on "Jetzt bestellen" fin

@browser .find_button ('Jetzt bestellen', attendez: 10) .cliquer

@browser .Find (: XPath, '// bouton [text() = "Jetzt bestellen"]', attendez: 10) .cliquer

+0

Avez-vous 'Capybara.exact' défini sur true par hasard? Si ce n'est pas le cas, le bouton est-il en dehors de la portée actuelle (c'est-à-dire que vous êtes dans un bloc interne qui ne contient pas le bouton). Note: 'click_button' est implémenté comme' find_button (args ...). Click' donc il n'est pas surprenant que votre troisième tentative ne soit pas différente de la première. Votre quatrième tentative ne fonctionnerait pas parce que le contenu du bouton est plus que juste "Jetzt bestellen". S'il vous plaît ajouter le message d'erreur exact que vous obtenez à votre question. –

+0

https://gist.github.com/twalpole/14cd6c69c91b3d54cf2bd994375a019b est un esprit qui prend le code HTML que vous montrez, le met dans un document, puis montre capybara en trouvant un clic dessus. Etes-vous sûr que le texte est "Jetzt bestellen" lorsque votre test est en cours? et pas le "Jetzt kaufen" que vous montrez dans le html? Pourriez-vous essayer juste de faire click_button ('Jetzt') 'et voir si cela passe. –

Répondre

0

Voilà comment je suis arrivé ce problème lors du test d'une application angulaire.

@browser.find('button', text: 'Jetzt bestellen').click 

sans HREF sur les liens et les boutons quelques radiogoniomètres capybara ne fonctionnent pas comme ils le feraient si elles avaient un href.

+0

Dans les liens Capybara, les attributs 'href' sont obligatoires ou vous devez spécifier une option 'href: nil' pour cliquer sur le lien. C'est parce que la spécification html dit que ce n'est pas un lien si elle n'a pas de href - juste un espace réservé de lien. Les éléments 'button' n'ont cependant aucune exigence de ce genre dans Capybara (juste qu'ils ne sont pas désactivés) –