Vous devez utiliser un pilote compatible JS pour votre test. Si vous utilisez webrat o capybara, vous pouvez essayer d'utiliser le sélénium. Cela ne fonctionne pas avec l'étape Web par défaut, car le DOM n'a pas été mis à jour lorsqu'il recherche le texte. Il y a 2 options:
Option 1: Attendez
And I wait for 1 second
Then I should see "foo"
Vous devez mettre en œuvre cette étape pour appeler le sommeil (n)
Option 2: localiser sur mesure
Capybara de La méthode locate va voir si la cible est présente dans le DOM. Si ce n'est pas le cas, il attendra quelques secondes et réessayera et enverra une erreur si elle n'est toujours pas présente.
Then I should see the following autocomplete options:
| foo |
Voici comment la mise en œuvre des étapes ressemble pour moi:
Then /^I should see the following autocomplete options:$/ do |table|
table.raw.each do |row|
locate(:xpath, "//a[text()='#{row[0]}']")
end
end
Si vous avez besoin de plus amples informations sur ce sujet, je l'ai écrit un blogpost avec des exemples et quelques extraits, traitant également en cliquant sur les options de saisie semi-automatique présentées:
http://www.aentos.com/blog/testing-ajax-autocomplete-fields-cucumber-and-capybara