Le véritable problème que vous avez probablement est que save_and_open_page
enregistre le code HTML avec les valeurs d'attribut en cours PAS les valeurs de propriété en cours. Cela signifie que le fait que vous avez sélectionné un bouton radio (qui modifie la valeur de la propriété vérifiée, et non la valeur de l'attribut, ne sera pas nécessairement affiché). Il vaut mieux utiliser save_and_open_screenshot
si vous voulez voir l'état actuel d'une page. Cela étant dit ci-dessous est des moyens que vous pouvez sélectionner les boutons radio.
Pour sélectionner un bouton radio spécifique avec Capybara vous pouvez utiliser l'identifiant, le nom, le texte de l'étiquette et la valeur trop si nécessaire pour rendre unique (avec un nom par exemple)
choose('registration_payer_type_freelancer') # id
choose('registration[payer_type]', option: 'freelancer') # name and value to make unique
choose('Freelancer') # label text
choose(option: 'freelancer') # just value if the only radio button with that value
Dans tous les cas, si l'élément d'entrée de bouton radio réelle est non visible (pour le style, etc.) sur la page et que vous voulez à la place cliquez sur l'étiquette visible, vous pouvez passer allow_label_click: true
choose('registration_payer_type_freelancer', allow_label_click: true) # find by id and select by clicking the label if input is non-visible
d'autres options que vous pouvez utiliser est de trouver juste en CSS (l'argument: css peut être ignoré si votre type de sélection par défaut est la valeur par défaut: Css)
find(:css, '#registration_payer_type_freelancer').click
Vous pouvez également utiliser des requêtes XPath pour localiser l'élément, mais ils ne sont vraiment pas nécessaire 98% du temps (plus de gens correctement comprendre CSS et avec détermination de la portée de finders, il peut généralement être utilisé pour obtenir n'importe quel élément), et avoir des problèmes à connaître - https://github.com/teamcapybara/capybara/blob/master/README.md#beware-the-xpath--trap
find(:xpath, './/input[@value="freelancer"]').click