选择单选按钮时Ruby的机械化功能(可能因为它的名称大写)但是Perl的WWW :: Mechanize工作正常

时间:2014-03-19 20:32:46

标签: ruby mechanize

我尝试使用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看到一个大写的无线电按钮名称,并认为它是常数?

感谢。

2 个答案:

答案 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;现在至少向我展示了两个下拉列表的值。