2013-04-23 101 views
-1

我有一些看起來像這樣:機械化重定向/引入nokogiri(使用機械化小白)

def self.foo 
    agent = Mechanize.new 
    form = agent.get("link/to/form/url") 

    form.form_with(:name => "form_name") do |f| 
    f.field_with(:name => "input_name").value = "random_value" 
    agent.form.forms[0].submit 
    agent.follow_meta_refresh = true 
    end 
    self.bar 
end 

def self.bar 
    #may need to pass variable for agent here? 
    doc = Nokogiri::HTML(open(need redirect object!)) 
    doc.css(".random_class").text 
end 

後,我調用類的方法foo,它成功地找到的形式,在輸入填寫並提交。但是,當它完成並致電bar時,我卡住了。

我還沒有找到一種方法,可以在重定向提交表單提交後測試並查看我是否捕獲了正確的頁面,並使用Nokogiri解析CSS,從而成功傳入了機械化對象,該對象是生成頁面的HTML。

任何有機械化嚮導有任何建議嗎?

+0

什麼是'Nokogiri :::: HTML'?你顯然沒有嘗試運行該代碼。你的意思是'Nokogiri :: HTML'? – 2013-04-23 23:51:41

+0

是的錯字,這不是複製和粘貼... – 2013-04-24 11:08:52

回答

0

您的agent變量是foo方法的局部變量,因此bar看不到它。您可能想要使用一個類變量,例如@agent。我不知道你爲什麼要創建類似這樣的方法。如果你爲課堂提供了源代碼,並且更詳細地描述了你爲什麼這樣做,你可能會得到更好的建議。