Ruby 的 Mechanize 在选择单选按钮时会犹豫(可能是因为它的名称大写)但 Perl 的 WWW::Mechanize 工作正常

标签 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 => "KeywordType") 之类的事情,但无济于事。

附带说明一下,发生了什么是因为 Ruby 看到大写的单选按钮名称并认为它是一个常量?

谢谢。

最佳答案

这行得通吗?

field['KeywordType'] = 'rdoAny'

编辑:哦,我想你在这里错过了一部分:
result = page.form_with(:id => 'frmSearch') do |field|

应该是(我认为):
result = page.form_with(:id => 'frmSearch').fields.each do |field|

关于Ruby 的 Mechanize 在选择单选按钮时会犹豫(可能是因为它的名称大写)但 Perl 的 WWW::Mechanize 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517468/

相关文章:

Ruby Regexp 精确匹配字符串

python - 使用代码中的 Mechanize 错误进行网页抓取

ruby-on-rails - rails : printing a list to a view using Mechanize

perl - 通过 perl Mechanize 获取有关文件附件的信息

python - 更改 python mechanize 中的链接

ruby - Rails 根据 Action 隐藏表单字段

php - 图像大小调整 Web 服务

Python Mechanize 如何使用缓存密码?

ruby-on-rails - 在 Selenium 集成测试期间无法发送 TAB 键

ruby - 捕获多个匹配项的最佳方法