Comment tester si une balise div a un certain style css? Je suis en train de tester, si il a display:none;
ou display:block
.
J'ai essayé ce qui suit, mais sa me donne une erreur:
it {should have_selector('signup_server_generic_errors', /display:\s*none/)}
Je recommande qu'au lieu d'essayer de localiser le style css, vous au lieu d'écrire vos tests pour trouver la nom de classe css.
De cette façon, vous pouvez modifier le css sous-jacent de style tout en gardant la classe la même et vos tests passent encore.
À la recherche pour le style est fragile. Les Styles changent fréquemment. Basez votre rspecs sur la localisation des éléments de style qui rend vos tests de plus en plus fragiles -- ils seront plus susceptibles d'échouer lorsque tous vous avez à faire est de changer un div à l'aspect et la convivialité.
Baser vos tests sur la recherche de classes css rend les tests plus robuste. Il leur permet de s'assurer que votre code fonctionne correctement, tout en ne nécessitant pas de vous changer quand vous changez de page style.
Dans ce cas précis, une option pourrait être de définir une classe css nommé
.hidden
qui définitdisplay:none;
sur un élément pour le cacher.Comme ceci:
css:
html:
capybara:
Ce capybara semble juste un div qui a le
hidden
classe -- vous pouvez faire ce matcher plus sophistiquée si vous avez besoin d'.Mais le point principal c'est de fixer les styles pour les noms de classe css, alors, attachez vos tests en cours, pas les styles.
.is-hidden { display: none; }
ou similaire qui est ensuite ajoutée à l'aide de javascript ou rendus au chargement de la page. Test de l'existence de cette classe serait assez robuste; je dirais que le problème est en partie liée avec l'extrémité avant d'une mauvaise pratique ($(elem).css('display', 'none');
par exemple)Vous pouvez utiliser
has_css?
matcher. Il peut accepter:visible
options. Pour plus de détails, vous pouvez vérifier docs: http://rdoc.info/github/jnicklas/capybara/Capybara/Node/Matchers#has_css%3F-instance_methodPar exemple, vous pouvez essayer:
:visible => true
- le résultat peut ne pas être exacte: http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#visible%3F-instance_method:visible
option peut être surprenant si l'aidetrue
oufalse
. J'ai trouvé à l'aide devisible: :visible
ouvisible: :hidden
plus clair. en savoir plus et discussions sur ces options de symboleMa façon à s'assurer que l'élément ont une certaine classe:
ou smthing comme ce
Je l'ai trouvé ici: http://rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#%5B%5D-instance_method