Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clicking a button with Ruby Mechanize

Tags:

ruby

mechanize

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?

like image 535
Sean Avatar asked Aug 31 '11 21:08

Sean


2 Answers

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.

like image 104
Flaviu Avatar answered Sep 22 '22 12:09

Flaviu


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.

like image 40
Serabe Avatar answered Sep 19 '22 12:09

Serabe