使用Ruby中的Mechanize选择List

时间:2012-03-26 16:25:07

标签: ruby mechanize mechanize-ruby

我正在尝试使用Mechanize with Ruby设置选择列表的值。我可以使用选择列表导航到页面,使用.form方法获取表单,然后找到选择列表。

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

正确返回正确的对象。

但是,我仍然无法设置此字段的值!我试过了:

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"

但是当我这样做的时候:

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

值字段仍为空。

有什么我想念的吗?提示?窍门?更好的机械化文档而不是生活在http://mechanize.rubyforge.org的文档?

谢谢!

编辑:相关的HTML是: 相关的HTML是:

<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>

5 个答案:

答案 0 :(得分:6)

试试这个

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

(通过12

答案 1 :(得分:2)

这通常足够好:

report_form["report_type"] = "Foo"

答案 2 :(得分:1)

我遇到了同样的问题,对我来说也没什么用,但是我想澄清一下除了选择选项之外我还能设置值。

    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: []]

提交表单后,select被视为空,但是如果我这样做

    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"]]

答案 3 :(得分:0)

Foo不在选择列表中,我想如果你把它改成Foo1(或其他)它应该有用!?

答案 4 :(得分:0)

实际上它实际上是Mechanize gem中的一个bug。确保您使用的是0.6.0或更新版本。