Je suis en utilisant RSpec2 et le Capybara pour le test d'acceptation.
Je voudrais affirmer que le lien est désactivé ou n'est pas dans le Capybara. Comment puis-je faire cela?
Je suis en utilisant RSpec2 et le Capybara pour le test d'acceptation.
Je voudrais affirmer que le lien est désactivé ou n'est pas dans le Capybara. Comment puis-je faire cela?
Une solution simple est d'accéder à l'attribut HTML que vous cherchez avec l' []
:
find('#my_element')['class']
# => "highlighted clearfix some_other_css_class"
find('a#my_element')['href']
# => "http://example.com
# or in general, find any attribute, even if it does not exist
find('a#my_element')['no_such_attribute']
# => ""
Comment êtes-vous désactiver le lien? C'est une classe que vous avez ajouté? Un attribut?
# Check for a link that has a "disabled" class:
page.should have_css("a.my_link.disabled")
page.should have_xpath("//a[@class='disabled']")
# Check for a link that has a "disabled" attribute:
page.should have_css("a.my_link[disabled]")
page.should have_xpath("//a[@class='disabled' and @disabled='disabled']")
# Check that the element is visible
find("a.my_link").should be_visible
find(:xpath, "//a[@class='disabled']").should be_visible
La réelle xpath sélecteurs peuvent être incorrects. Je n'ai pas utiliser xpath souvent!
C'était un peu brouillon pour trouver le bon xpath, ici est la bonne,
à l'aide de capybara 0.4.1.1
# <a href="http://stackoverflow.com/clowns?ordered_by=clumsyness" class="weep">View Clowns</a>
page.should have_xpath("//a[@class='weep'][@href='http://stackoverflow.com/clowns?ordered_by=clumsyness']", :text => "View Clowns")
Si vous avez seulement un lien sans classe, l'utilisation
page.should have_link('View Clowns', :href => '/clowns?ordered_by=clumsyness')
Quelque chose comme ce sera malheureusement pas le travail:
page.should have_link('This will not work!', :href => '/clowns?ordered_by=clumsyness', :class => "weep")
La classe option sera ignorée.
page.should have_link('It will work this way!', {:href => '/clowns?ordered_by=clumsyness', :class => "smile"})
have_link s'attend à un hachage d'options qui est vide si vous n'en fournissent pas. Vous pouvez spécifier les attributs du lien ont - assurez-vous de passer toutes les options dans l'UN de hachage.
Espérons que cette aide
PS: Pour les attributs comme des données-méthode, vous devez passer le nom de l'attribut comme une chaîne de caractères depuis le trait d'union rompt le symbole.
Chaque fois que possible, vous devriez essayer d'utiliser le Capybara fourni des wrappers qui permettra de travailler de façon plus systématique à travers des pilotes.
Pour le cas particulier de l' disabled
, une enveloppe a été introduit dans la version 2.1: https://github.com/jnicklas/capybara/blob/fc56557a5463b9d944207f2efa401faa5b49d9ef/History.md#version-210
Si vous l'utilisez, vous obtiendrez des résultats sensées sur les deux RackTest et Lutin:
HTML:
<input type="text" id="disabled-false" ></div>
<input type="text" id="disabled-true" disabled></div>
<input type="text" id="disabled-js-true" ></div>
<input type="text" id="disabled-js-false" disabled></div>
<script>
document.getElementById('disabled-js-true').disabled = true
document.getElementById('disabled-js-false').disabled = false
</script>
Tests:
!all(:field, 'disabled-false', disabled: false).empty? or raise
all(:field, 'disabled-false', disabled: true ).empty? or raise
all(:field, 'disabled-true', disabled: false).empty? or raise
!all(:field, 'disabled-true', disabled: true ).empty? or raise
all(:field, 'disabled-js-true', disabled: true ).empty? or raise
all(:field, 'disabled-js-false', disabled: false).empty? or raise
Capybara.current_driver = :poltergeist
!all(:field, 'disabled-false', disabled: false).empty? or raise
all(:field, 'disabled-false', disabled: true ).empty? or raise
all(:field, 'disabled-true', disabled: false).empty? or raise
!all(:field, 'disabled-true', disabled: true ).empty? or raise
!all(:field, 'disabled-js-true', disabled: true ).empty? or raise
!all(:field, 'disabled-js-false', disabled: false).empty? or raise
Notez comment à l'aide de ce lieu de sélecteurs CSS, le Javascript, des tests de travailler sans aucune modification si vous commencez à utiliser un Js capable de pilote.
Praticable fichier de test ici.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.