我有一些东西看起来像这样:
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对象,该对象是在重定向post表单提交后产生的页面的HTML,以测试并查看我是否捕获了正确的页面,并使用Nokogiri解析CSS。
有什么机械化巫师有什么建议吗?您的agent
变量是foo
方法的局部变量,因此bar
看不到它。你可能想使用一个类变量,例如@agent
。我不确定为什么要创建这样的类方法。如果您提供了类的源代码,并提供了为什么这样做的更多描述,您可能会得到更好的建议。