我有一个无序列表的链接,我保存在一边,我想单击每个链接并确保它转到真实页面,而不是 404、500 等。
问题是我不知道该怎么做。是否有一些我可以检查的对象可以为我提供 http 状态代码或其他内容?
mylinks = Browser.ul(:id, 'my_ul_id').links
mylinks.each do |link|
link.click
# need to check for a 200 status or something here! how?
Browser.back
end
我的回答和铁皮人的想法类似。
require 'net/http'
require 'uri'
mylinks = Browser.ul(:id, 'my_ul_id').links
mylinks.each do |link|
u = URI.parse link.href
status_code = Net::HTTP.start(u.host,u.port){|http| http.head(u.request_uri).code }
# testing with rspec
status_code.should == '200'
end
如果您使用 Test::Unit 进行测试框架,我认为您可以进行如下测试
assert_equal '200',status_code
另一个示例(包括 Chuck van der Linden 的想法):检查状态代码并在状态不好时注销 URL。
require 'net/http'
require 'uri'
mylinks = Browser.ul(:id, 'my_ul_id').links
mylinks.each do |link|
u = URI.parse link.href
status_code = Net::HTTP.start(u.host,u.port){|http| http.head(u.request_uri).code }
unless status_code == '200'
File.open('error_log.txt','a+'){|file| file.puts "#{link.href} is #{status_code}" }
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)