2014-09-04 38 views
0

我很努力向表單添加字段,因爲機械化不檢測字段。 我有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]

的問題是,按照這種形式不含有任何領域機械化,但實際上它確實包含另外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正確解析?

是否有任何其他方式手動添加字段或我忽略了什麼?

+0

該網站是使用java腳本生成的。 – Basher52 2014-09-25 21:13:37

回答

0

我發現網頁是由javascript生成的。 這可能是表單不起作用的原因。

通過閱讀java代碼,我發現weblink是如何通過你選擇的選項建立起來的。使用Nokogiri遍歷這些選項,建立鏈接並下載html源代碼,我可以導航到我想要的地方。

+0

好像你能夠自己解決它。請接受你自己的答案。 – 2014-12-14 10:13:03

+0

只是,thx :) – Basher52 2014-12-15 18:17:53