2009-07-27 8 views
2

Le concombre génère certaines étapes de regex webrat soignées. J'ai rencontré un problème quand j'ai essayé le ceci.Expressions régulières dans les étapes de concombre

En fonction:

And I fill in "Telephone (Home)" with "61234567" 

Dans les étapes de Webrat:

When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value| 
    fill_in(field, :with => value) 
end 

L'erreur rencontrée:

Could not find field: "Telephone (Home)" (Webrat::NotFoundError) 

Il s Il semble que la parenthèse entre "Home" pose problème. Comment modifier l'expression rationnelle pour tenir compte des parenthèses?

MISE À JOUR:

Il semble que l'expression régulière ne fut pas le problème comme le "champ " variable d'instance a fait le rendement "Téléphone (Home)". Le vrai problème était la façon dont la méthode "fill_in" de webrat analyse la variable de champ.

Répondre

0

Cela me rencontré trop avec le champ "(déconnecter)" ...

Vous pourriez appeler pour le champ id?

fill_in("user_telephone_home", :with => data) 
+0

Eh oui, je fini par utiliser l'identifiant de champ bien qu'il colle comme un pouce endolori dans mes définitions de fonction de concombre. Merci! – JasonOng

1

Si vous voulez seulement capturer "Téléphone" essayez ceci:

/^I fill in "(\w+).*?" with "([^\"]*)"$/ 

Si c'est "Home" vous êtes après, essayez ceci:

/^I fill in "(?:.*?\()?(.+?)\)?" with "([^\"]*)"$/; 
0

J'ai eu un problème similaire avec les étiquettes correspondant aux champs dans Webrat, et je suis venu avec cet extrait de code qui desserre le regexp utilisé pour faire correspondre une étiquette à un champ. Peut-être que ça va vous aider.

J'ai dans mon features/support/env.rb

module Webrat 
    module Locators 
    class FieldLabeledLocator < Locator 
     def matching_label_elements_with_numbering 
     label_elements.select do |label_element| 
      text(label_element) =~ /^.*#{Regexp.escape(@value.to_s)}.*$/i 
     end 
     end 
     alias_method_chain :matching_label_elements, :numbering 
    end 
    end 
end 

http://gist.github.com/169215

Questions connexes