使用Watir检查错误的链接

puf*_*pio 5 ruby watir

我有一个无序的链接列表,我保存到一边,我想点击每个链接,并确保它进入一个真实的页面,并没有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
Run Code Online (Sandbox Code Playgroud)

Yut*_*chi 5

我的回答与Tin Man相似.

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