2009-12-31 15 views
4

J'utilise du concombre, du webrat et du sélénium pour tester une application web. J'utilise 'Je devrais voir "quelque chose"' pour vérifier les changements. Cependant, dans de nombreux endroits, le texte à vérifier change seulement de caché à visible (cela peut être dû à la suppression de la classe 'cachée' de lui-même ou de l'un de ses ancêtres). Dans ce cas, le test ci-dessus ne vérifie pas réellement le changement. J'essaie d'utiliser 'response.should_not has_tag ("div # myId.hidden")', ce qui ne fonctionne pas. Quelle est la méthode recommandée pour tester cela?Concombre + webrat + sélénium, comment ignorer le texte caché?

Environnement: concombre 0.3.11, le sélénium-client 1.2.17, 0.6.0 Webrat

Merci.

Répondre

5

Pour les cas comme ceux-ci, j'utiliser ces deux étapes personnalisées:

Then /^the element matched by "([^\"]*)" should be visible$/ do |locator| 
    selenium.should be_visible(locator) 
end 

Then /^the element matched by "([^\"]*)" should not be visible$/ do |locator| 
    selenium.should_not be_visible(locator) 
end 

Mettez les dans un fichier Ruby sous step_definitions/répertoire.

Ainsi, dans votre cas, au lieu de je devrais voir « quelque chose » utilisation Puis l'élément par correspondance « quelque chose » doit être visible.

+0

Devrait être un sélecteur css ou du texte vu sur la page? –

+0

selenium.should be_visible "div # myId" produit cette erreur: Element # myId not found (Selenium :: CommandError) Je suis sûr que son sélecteur CSS valide. Qu'est-ce qui aurait pu mal tourner? –

+0

Utilisez "css = div # myId" (et lisez-en plus ici: http://seleniumhq.org/docs/04_selenese_commands.html#locating-by-css). –

3

Est-ce que cela fonctionne à la place d'utiliser has_selector ("div # myId.hidden")?

+0

Cela fonctionne. Merci beaucoup. –

+0

De rien, et bonne année :-) – schmitzelburger

1

La solution retenue ne fonctionne pas avec l'environnement suivant: (. 0,10) Rails (3.0.0), Webrat (0.7.3) le sélénium-client (02/01/18), le concombre

La solution qui fonctionne, avec l'exemple fourni dans la réponse est maintenant:

Then /^the element matched by "([^\"]*)" should be visible$/ do |locator| 
    selenium.is_visible(locator).should be_true 
end 

Then /^the element matched by "([^\"]*)" should not be visible$/ do |locator| 
    selenium.is_visible(locator).should_not be_true 
end 
+1

Où se trouve le sélénium? Je reçois "méthode indéfinie 'is_visible' pour nil: NilClass" – RyanJM