我正在尝试使用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>
答案 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"
答案 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
或更新版本。