2013-04-23 104 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。我不知道你为什么要创建类似这样的方法。如果你为课堂提供了源代码,并且更详细地描述了你为什么这样做,你可能会得到更好的建议。