机械化重定向/ Nokogiri(使用机械化的noob)

时间:2013-04-23 18:03:51

标签: ruby-on-rails ruby nokogiri mechanize

我有一些看起来像这样的东西:

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时,我就被卡住了。

我没有找到一种方法来成功传入一个Mechanize对象,该对象是在重定向帖子表单提交到测试之后生成的页面的HTML,看看我是否已经捕获了正确的页面,并用Nokogiri解析了CSS。

那里有任何有任何建议的Mechanize向导吗?

1 个答案:

答案 0 :(得分:0)

您的agent变量是foo方法的本地变量,因此bar没有看到它。您可能想要使用类变量,例如@agent。我不确定你为什么要这样创建类方法。如果你提供课程的来源,并且更多地描述你为什么这样做,你可能会得到更好的建议。