Clicking a button with Ruby Mechanize

21,165

Solution 1

It is not a link, it is a button. What you need to do is look for the form (for example, with form_with) and then look for the ImageButton and submit it.

Solution 2

I struggled with this too, especially since my form had multiple buttons.

There are multiple ways to submit a form (with many using a 'form_with' block), but this helped me:

# get the form
form = agent.page.form_with(:name => "my-form")
# get the button you want from the form
button = form.button_with(:value => "Search")
# submit the form using that button
agent.submit(form, button)

See more info here

Also, make sure you upgrade to the latest mechanize. I was using mechanize 1.x, which was giving me "undefined method" errors for the code above.

Share:
21,165
Sean
Author by

Sean

Web developer who lives in Denver, CO and works at George Mason University. I'm an active member of my local ruby community, if you are ever in the area stop by one of our meetings and say hello! (arlingtonruby.org) Or plan to attend rubyforgood.com the next time we put it on. :)

Updated on May 25, 2020

Comments

  • Sean
    Sean almost 4 years

    I have a particularly difficult form that I am trying to click the search button and can't seem to do it. Here is the code for the form from the page source:

    <input type="image" name="" src="http://images.example.com/WOKRS53B4/images/search.gif" align="absmiddle" border="0" onclick="return check_form_inputs('UA_GeneralSearch_input_form','search');" title="Search" alt="Search" class="">
    

    I am trying to do the standard mechanize click action:

    login_page = agent.click(homepage.link_with(:text => "Search"))
    

    Is this because the button uses javascript? If so, any suggestions?

  • Kris
    Kris over 12 years
    Do you have some code that demonstrates how to use an image input to submit a form?
  • Serabe
    Serabe over 12 years
    I think you should consider asking a proper question since it doesn't seem related to this one.
  • Pradeep atkari
    Pradeep atkari over 5 years
    thank you. one correction is required in syntax ":value" to ":values"