水豚匹配元素 id 与正则表达式
Capybara match element id with regex
我正在使用 Cocoon gem 在 Rails 中构建嵌套表单。 gem 为每个重复的表单元素分配一个随机数以区分它们。
例如:
id="challenge_events_attributes_1464333427019_event_time_3i"
其中“1464333427019”是一个随机数。
我已经尝试过各种迭代:
x = page.all(:xpath, '//input[contains("challenges_events_attributes")]')
puts "X: #{x.inspect}"
假设我在一个页面上有多个元素,我如何使用 Capybara 定位这些元素(可能使用 xpath),然后为它们赋值?
不需要使用 xpath,CSS 属性以选择器开头就可以了
page.all('input[id^="challenges_events_attributes_"]').each do |el|
el.set('whatever value you want to set')
end
如果您也需要它来匹配 id 的结尾,您可以将属性结尾与选择器 page.all('input[id^="challenges_events_attributes_"][id$="_event_time_3i"]')
等结合起来。
我正在使用 Cocoon gem 在 Rails 中构建嵌套表单。 gem 为每个重复的表单元素分配一个随机数以区分它们。
例如:
id="challenge_events_attributes_1464333427019_event_time_3i"
其中“1464333427019”是一个随机数。
我已经尝试过各种迭代:
x = page.all(:xpath, '//input[contains("challenges_events_attributes")]')
puts "X: #{x.inspect}"
假设我在一个页面上有多个元素,我如何使用 Capybara 定位这些元素(可能使用 xpath),然后为它们赋值?
不需要使用 xpath,CSS 属性以选择器开头就可以了
page.all('input[id^="challenges_events_attributes_"]').each do |el|
el.set('whatever value you want to set')
end
如果您也需要它来匹配 id 的结尾,您可以将属性结尾与选择器 page.all('input[id^="challenges_events_attributes_"][id$="_event_time_3i"]')
等结合起来。