0

我正在使用 mechanize 并在使用脚本/控制台在 Rails 环境中进行测试时遇到继承问题。

当我这样写时:

require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
agent.get 'http://www.google.com'

一切正常。但是当我尝试像这样创建 WWW::Mechanize 的子类时:

require 'rubygems'
require 'mechanize'

class Alfa < WWW::Mechanize; end

agent = Alfa.new
agent.get 'http://www.google.com'

我收到以下错误:

NoMethodError:当你没有预料到它时,你有一个 nil 对象!从 /Library/Ruby/Gems/1.8/gems/mechanize-0.9.3/lib/www/mechanize/page.rb:77:in `parser' 评估 nil.parse 时发生错误

我错过了什么吗?

提前致谢

4

1 回答 1

2

当您继承 WWW::Mechanize 时,没有提供 HTML 解析器:这就是错误行实际告诉您的内容。

这有效:

class Agent < WWW::Mechanize
end
a = Agent.new
a.html_parser = Nokogiri::HTML
a.get 'http://www.google.com'
于 2010-03-03T19:04:44.720 回答