2016-05-27 11 views
3

Ich verwende die Edelstein, um ein verschachteltes Formular in Rails zu erstellen. Dieser Edelstein weist jedem duplizierten Formelement eine Zufallszahl zu, um zwischen ihnen zu unterscheiden.Capybara Match-Element-ID mit Regex

Zum Beispiel:

id="challenge_events_attributes_1464333427019_event_time_3i" 

Wo '1464333427019' eine Zufallszahl ist.

Ich habe verschiedene Iterationen diesen versucht:

x = page.all(:xpath, '//input[contains("challenges_events_attributes")]') 
puts "X: #{x.inspect}" 

Ich habe mehrere Elemente auf einer Seite Unter der Annahme, wie kann ich diese Elemente mit Capybara (vielleicht mit XPath) gerichtet ist, und dann Werte zuweisen?

Antwort

5

Es besteht keine Notwendigkeit XPath zu verwenden ist, beginnt das CSS-Attribut mit Selektor für diesen

page.all('input[id^="challenges_events_attributes_"]').each do |el| 
    el.set('whatever value you want to set') 
end 

gut funktionieren, wenn Sie es brauchen auch das Ende der ID übereinstimmen können Sie verbinden sich mit dem Attribut endet mit Wahlschalter page.all('input[id^="challenges_events_attributes_"][id$="_event_time_3i"]') usw.