Capybara n'a pas une méthode find_select
, mais il a un type de sélecteur :select
-https://github.com/teamcapybara/capybara/blob/2.15.1/lib/capybara/selector.rb#L358
Le premier paramètre à find
est le type de sélection (par défaut: Css si omis) afin que vous puissiez faire ce que vous veulent avec
assert_equal true, find(:select, 'id').readonly?
Depuis qui utilise une affirmation non fourni capybara il a l'inconvénient de ne pas utiliser un comportement d'attente/réessayant. Si le statut de l'élément change dynamiquement, cela peut entraîner des problèmes de synchronisation et des tests de détection. Si cela se passe sur votre page, vous ferez mieux d'utiliser le type de sélecteur :field
qui fournit un filtre readonly
- https://github.com/teamcapybara/capybara/blob/2.15.1/lib/capybara/selector.rb#L88 - et qui peut également correspondre à certains éléments (Le sélecteur :select
ne possède pas de filtre en lecture seule car techniquement l'élément select ne support en lecture seule - voir ci-dessous).
assert_selector :field, 'id', type: 'select', readonly: true
en supposant que vous avez chargé le capybara a fourni des affirmations MiniTest qui pourraient également être écrits comme
assert_field 'id', type: 'select', readonly: true
ou avec le ': sélectionnez' affirmation de sélection et un bloc filtrant
assert_select('i') { |el| el.readonly? }
Notez cependant, en HTML, la méthode select ne supporte pas réellement un attribut readonly, donc si ce que vous voulez vraiment est de vous assurer que l'élément select est désactivé alors vous feriez
assert_field 'id', type: 'select', disabled: true
assert_select 'id', disabled: true
etc.
Quelle est l'erreur exacte que vous obtenez? –
méthode non définie 'find_select' –