添加未命名的字段到表单。机械化Ruby

时间:2014-09-04 20:31:50

标签: mechanize-ruby

我正在努力向表单添加字段,因为Mechanize不会检测字段。 我有3个表格,我设法选择了正确的表格。

输入p site.forms会显示以下内容:

=> [#<Mechanize::Form
 {name "userloginform"}
 {method "POST"}
 {action "/user?destination="}
 {fields
  [text:0xc01f34 type: text name: name value: ]
  [field:0xc01cf0 type: password name: pass value: ]
  [hidden:0xc01ad4 type: hidden name: url value: en/Results+Statistics]
  [hidden:0xc01930 type: hidden name: form_id value: user_login]}
 {radiobuttons}
 {checkboxes}
 {file_uploads}
 {buttons [submit:0xc017c8 type: submit name: op value: Login]}>
, #<Mechanize::Form
 {name "searchFromBlock"}
 {method "GET"}
 {action ""}
 {fields
  [text:0xc04964 type: text name: queryString value: Search]
  [hidden:0xc044b4 type: hidden name: num value: 10]
  [hidden:0xc09f68 type: hidden name: pagenum value: 1]
  [hidden:0xc09ce8 type: hidden name: start value: 1]
  [hidden:0xc09ae0 type: hidden name: lang value: en]
  [hidden:0xc097e8 type: hidden name: content value: all]}
 {radiobuttons}
 {checkboxes}
 {file_uploads}
 {buttons [submit:0xc046f8 type: submit name: search value: ]}>
, #<Mechanize::Form
 {name nil}
 {method "GET"}
 {action ""}
 **{fields}**
 {radiobuttons}
 {checkboxes}
 {file_uploads}
 {buttons}>}>
  ]

我选择了最后一个表格(这是我的目标):form = site.form[2]

问题是这个表单根据Mechanize不包含任何字段,但实际上它确实包含另外3个字段。我想操纵这些,但在我能做到之前,我需要将字段添加到表单对象。

这样一个领域的一个例子是:

<select id="season" class="w_label_resul fonts12" style="display: none" size="7">
<option title="1949" value="1949"> … </option>
<option title="1950" value="1950"> …</option>
<option title="1951" value="1951"> … </option>
<option title="2012" value="2012"> … </option>
<option title="2013" value="2013"> … </option>
<option class="selected" selected="" title="2014" value="2014"> … </option>
</select>

如您所见,它没有“名称”,因此我无法将add_field!方法用于Mechanize::form, 因为它将field_name作为第一个参数,而不存在。 意味着Nokogiri没有正确解析它?

有没有其他方法可以手动添加字段,还是我忽略了某些内容?

1 个答案:

答案 0 :(得分:0)

我发现该网页是由javascript生成的。 这可能是表格不起作用的原因。

通过阅读java代码,我发现了如何通过您选择的选项构建weblink。使用Nokogiri迭代这些选项,构建链接并下载html源代码,我能够导航到我想要的地方。