我尝试使用Ruby的Mechanize gem提交表单。这个表单有一组名为" KeywordType"的单选按钮。各个按钮的名称类似于rdoAny,rdoAll和rdoPhrase。使用Perl的WWW:Mechanize,它可以正常工作:
my $result = $agent->submit_form(
form_number => 1,
fields => {
txtKeywords => 'foo bar baz',
lstLocationCode => '2100',
lstONETMajorGroup => '0',
KeywordType => 'rdoAny'
},
button => 'btnSearch'
);
但是,当我这样做时,Ruby会说:
result = page.form_with(:id => 'frmSearch') do |field|
field.txtKeywords = 'foo bar baz'
field.lstLocationCode = '2100'
field.lstONETMajorGroup = '0'
field.KeywordType = 'rdoAny'
end.submit
这会引发错误
"undefined method `KeywordType=' for #<Mechanize::Form:0x00000001c896e0> (NoMethodError)".
我已经尝试省略KeywordType字段,但之后我只是被发送回同一页面而没有明显的错误消息。我也尝试过像field.radiobuttons.second.check和field.radiobuttons_with(:name =&gt;&#34; KeywordType&#34;)这样做无济于事。
另一方面,无论发生什么事,因为Ruby看到一个大写的无线电按钮名称,并认为它是常数?
感谢。
答案 0 :(得分:2)
这有用吗?
field['KeywordType'] = 'rdoAny'
编辑:哦,我想你错过了这里的一部分:
result = page.form_with(:id => 'frmSearch') do |field|
应该(我认为):
result = page.form_with(:id => 'frmSearch').fields.each do |field|
答案 1 :(得分:0)
Gaah。过时的版本gremlin再次袭击。 &#34; gem update mechanize&#34;现在至少向我展示了两个下拉列表的值。