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.