Hi, Anyone know a way to traverse/query the DOM in a response? I''m trying to write reusable story step implementations and as much as possible want to work with the actual response from a previous GET. As an example, I often have buttons that POST/PUT a hidden value. My goal is a reusable step implementation that takes the button label and works the existing response DOM to make an appropriate POST/PUT. - Andy -- View this message in context: http://www.nabble.com/Working-with-the-response-DOM-tf4681975.html#a13378946 Sent from the rspec-users mailing list archive at Nabble.com.
I completely forgot about Hpricot http://code.whytheluckystiff.net/hpricot/ Looks perfect for this. - Andy Andy Watts wrote:> > Hi, > > Anyone know a way to traverse/query the DOM in a response? > > I''m trying to write reusable story step implementations and as much as > possible want to work with the actual response from a previous GET. > > As an example, I often have buttons that POST/PUT a hidden value. > My goal is a reusable step implementation that takes the button label and > works the existing response DOM to make an appropriate POST/PUT. > > - Andy > >-- View this message in context: http://www.nabble.com/Working-with-the-response-DOM-tf4681975.html#a13378962 Sent from the rspec-users mailing list archive at Nabble.com.
I''ve been wondering the same for quite a while http://www.nabble.com/simple-story,-extract-link-t4518721.html but hadnt asked the question so succinctly In that thread, Pat suggests helpers like click_link and submit_form If you progress along these lines, please post your solution, I''m very interested. linoj On Oct 24, 2007, at 12:43 AM, Andy Watts wrote:> > I completely forgot about Hpricot > http://code.whytheluckystiff.net/hpricot/ > > Looks perfect for this. > > - Andy > > > > Andy Watts wrote: >> >> Hi, >> >> Anyone know a way to traverse/query the DOM in a response? >> >> I''m trying to write reusable story step implementations and as >> much as >> possible want to work with the actual response from a previous GET. >> >> As an example, I often have buttons that POST/PUT a hidden value. >> My goal is a reusable step implementation that takes the button >> label and >> works the existing response DOM to make an appropriate POST/PUT. >> >> - Andy >> >> > > -- > View this message in context: http://www.nabble.com/Working-with- > the-response-DOM-tf4681975.html#a13378962 > Sent from the rspec-users mailing list archive at Nabble.com. > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
Andy Watts
2007-Oct-25 04:29 UTC
[rspec-users] Working with the response DOM - Step implementations using Hpricot
I''m playing with step implementations that use hpricot to manipulate response.body. Here''s what I have so far. Very much work-in-progress, but may be of some use to you. #This step implementation takes a button''s label, collects the inputs and does the POST/PUT add.when("I click the $button_text button") do |button_text| h = Hpricot(response.body) form = h.search("form[button][text()=#{button_text}]").first action = form[:action] method = form[:method] headers = {''HTTP_REFERER'' => request.env[''REQUEST_URI'']} params = {} form.search(''input'').each{|i| params[i[:name]] = i[:value] } send(method, action, params, headers) end #This step implementation takes an input field & value, and updates the response.body add.when("I set the $input_field to $value") do |input_field,value| input_field.each{|s| s = s.sub!(/^''(.*?)''$/,''\1'') } # strip the quotes if used in the input field input_field.gsub!('' '', ''_'') # join to get an id to search for..not robust enough? h = Hpricot(response.body) # get body in Hpricot field_element = h.search("input##{input_field}").first # find the input field field_element[:value] = value # update the field''s value response.body = h.to_html # put the modified body back in the response end - Andy Jonathan Linowes wrote:> > I''ve been wondering the same for quite a while > http://www.nabble.com/simple-story,-extract-link-t4518721.html > but hadnt asked the question so succinctly > > In that thread, Pat suggests helpers like click_link and submit_form > If you progress along these lines, please post your solution, I''m > very interested. > > linoj > > > On Oct 24, 2007, at 12:43 AM, Andy Watts wrote: > >> >> I completely forgot about Hpricot >> http://code.whytheluckystiff.net/hpricot/ >> >> Looks perfect for this. >> >> - Andy >> >> >> >> Andy Watts wrote: >>> >>> Hi, >>> >>> Anyone know a way to traverse/query the DOM in a response? >>> >>> I''m trying to write reusable story step implementations and as >>> much as >>> possible want to work with the actual response from a previous GET. >>> >>> As an example, I often have buttons that POST/PUT a hidden value. >>> My goal is a reusable step implementation that takes the button >>> label and >>> works the existing response DOM to make an appropriate POST/PUT. >>> >>> - Andy >>> >>> >> >> -- >> View this message in context: http://www.nabble.com/Working-with- >> the-response-DOM-tf4681975.html#a13378962 >> Sent from the rspec-users mailing list archive at Nabble.com. >> >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > >-- View this message in context: http://www.nabble.com/Working-with-the-response-DOM-tf4681975.html#a13400114 Sent from the rspec-users mailing list archive at Nabble.com.