puts < ["user[login]", "user[password]"] # form.field_names returns you the input fields # available in the form # puts form.to_code # this prints lines of Ruby code like: # # form["from"] = "sender" # form["email[0]"] = "email1" # form["options[]"] = ["html", "read-receipt"] form["options[]"] = ["secure", "remember"] form["user[login]"] = "Joe" form["user[password]"] = "topsecret" form.extend!(get(:on_security_options_clicked)) do form["ssl"] = "true" # extend and assign in block... end form.extend!(get(:on_privacy_options_clicked)) form["sharing"] = "false" # or extend first, then assign later page = form.submit(self) # after setting the form values, submit it assert_response :success # 'page' now references the page after login # page.links # returns an array of links found on the page page = page.links("@id='signout'").first.click(self) assert_response :success end More info, README and http://blog.yanime.org/articles/2006/07/19/hpricotforms EOM