我有一些看起来像这样的东西:
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向导吗?
答案 0 :(得分:0)
您的agent
变量是foo
方法的本地变量,因此bar
没有看到它。您可能想要使用类变量,例如@agent
。我不确定你为什么要这样创建类方法。如果你提供课程的来源,并且更多地描述你为什么这样做,你可能会得到更好的建议。