# Initialize Mechanize Agent
agent = Mechanize.new

# Visit a web page
agent.get 'http://localhost:3000/'

# get the url of the current page
agent.page.uri #=> http://localhost:3000

# agent remembers the scheme + host, so no need to supply it when navigating somewhere else
agent.get '/whatever'

# Click on a link with the given text
agent.page.link_with(text: "Click here").click

# Complete and submit the first form on the page
agent.page.forms.first.tap do |f|
  f['user[email]']                     = 'hello@whatever.com'
  f['user[password]']                  = '123456789'
  f['user[password_confirmation]']     = '123456789'
  f['a_field[that_wasnt_in_the_form]'] = 'sneaky value'
  f.submit
end

# Inspect the page body
puts agent.page.body.inspect

# Search for elements on the page
puts agent.page.search('.secret').text.strip

# Set a cookie
cookie = Mechanize::Cookie.new('key', 'value').tap do |c|
  c.domain = 'localhost:3000'
  c.path   = '/'
end

agent.cookie_jar.add(agent.history.last.uri, cookie)

# Make it a little DSL-ish with instance_eval if you like...
Mechanize.new.instance_eval do
  get 'http://localhost:3000'
  page.link_with(text: 'Sign up').click
  page.forms.first.tap do |f|
    f['user[email]']                     = 'hello@whatever.com'
    f['user[password]']                  = '123456789'
    f['user[password_confirmation]']     = '123456789'
    f.submit
  end
end

end