5

I'm trying to set the value of a select list using Mechanize with Ruby. I can navigate to the page with the select list, grab the form using the .form method, and find the select list.

report_form =page.form('form1')
pp report_form.field_with(:name => "report_type")

Correctly returns the right object.

However, I'm still unable to set the value of this field! I've tried:

report_form.field_with(:name => "report_type").options.first.select
report_form.field_with(:name => "report_type").options[1].select
report_form.field_with(:name => "report_type").value = "Foo"

But when I then do:

pp report_form.field_with(:name => "report_type")

The value field is still empty.

Is there something I'm missing? Tips? Tricks? Better Mechanize docs than what live at http://mechanize.rubyforge.org?

Thanks!

Edit: The relevant HTML is: The relevant HTML is:

<TD>
<select id="report_type" name="report_type">
    <option value="Foo1">Opt 1</option>
    <option value="Foo2">Opt 2</option>
    <option value="Foo3">Opt 3</option>
</select></TD>
DNadel
  • 495
  • 1
  • 5
  • 13
  • The `report_form.field_with(:name => "report_type").value = "Foo"` should work for I'm understanding. The only to check this is to see the actual webpage. – Kassym Dorsel Mar 26 '12 at 18:48
  • I'm also unable to select any – professormeowingtons Mar 20 '13 at 00:11

5 Answers5

7

Try this

report_form.field_with(:name => "report_type").option_with(:value => "Foo").click
# now report_form.field_With(:name => "report_type").value should bee "Foo"

(via 1, 2)

John Douthat
  • 40,711
  • 10
  • 69
  • 66
3

It's usually good enough to do:

report_form["report_type"] = "Foo"
pguardiario
  • 53,827
  • 19
  • 119
  • 159
1

i ran into this same issue, nothing works for me either, but id like to clarify that im able to set the value to anything besides select options.

    report_form.field_with(:name => "report_type").value = "Foo1"
    report_form["report_type"]
    => "Foo1"
    report_form.field_with(:name => "report_type").value
    => "Foo1"
    report_form.field_with(:name => "report_type")
    => [selectlist:0x7c08ada type:  name: "report_type" value: []]

after submiting the form, the select is treated as empty, however if i do

    report_form.field_with(:name => "report_type").value = "anything not in the options"
    report_form.field_with(:name => "report_type")
    => [selectlist:0x7c08ada type:  name: "report_type" value: ["anything not in the options"]]
kaboo
  • 51
  • 1
0

Foo is not in the select list, i think if you change it to Foo1 (or the others) it should work!?

muescha
  • 1,544
  • 2
  • 12
  • 22
0

It actually turned out to be a bug in the Mechanize gem. Make sure you're using v 0.6.0 or newer.

professormeowingtons
  • 3,504
  • 7
  • 36
  • 50