Clicking a button with Ruby Mechanize
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.
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, 2020Comments
-
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 over 12 yearsDo you have some code that demonstrates how to use an image input to submit a form?
-
Serabe over 12 yearsI think you should consider asking a proper question since it doesn't seem related to this one.
-
Pradeep atkari over 5 yearsthank you. one correction is required in syntax ":value" to ":values"