首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FakeWeb实现机械化

使用FakeWeb实现机械化
EN

Stack Overflow用户
提问于 2009-12-09 16:33:14
回答 2查看 1.4K关注 0票数 1

我正在使用Mechanize从页面中提取链接。为了简化开发,我使用fakeweb来做超快的响应,以减少每次代码运行时的等待和烦人。

代码语言:javascript
复制
tags_url = "http://website.com/tags/"
FakeWeb.register_uri(:get, tags_url, :body => "tags.txt")

agent = WWW::Mechanize.new
page = agent.get(tags_url)
page.links.each do |link|
   puts link.text.strip
end

当我运行上面的代码时,它说:

代码语言:javascript
复制
nokogiri_test.rb:33: undefined method `links' for #<WWW::Mechanize::File:0x9a886e0> (NoMethodError)

在检查页面对象的类之后

代码语言:javascript
复制
puts page.class # => File

如果我不伪装tags_url,它就可以工作,因为页面类现在是Page类

代码语言:javascript
复制
puts page.class # => Page

那么,我怎样才能使用带有mechanize的fakeweb来返回Page而不是File对象呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-09 18:38:05

使用FakeWeb播放预热HTTP请求:

代码语言:javascript
复制
tags_url = "http://website.com/tags/"
request  = `curl -is #{tags_url}`
FakeWeb.register_uri(:get, tags_url, :response => request)

agent = WWW::Mechanize.new
page = agent.get(tags_url)
page.links.each do |link|
   puts link.text.strip
end

使用-i标志调用curl将在响应中包含报头。

票数 7
EN

Stack Overflow用户

发布于 2011-06-20 01:50:30

您可以很容易地解决这个问题,添加选项:content_type => "text/html" You your FakeWeb.register_uri call

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1872428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档