2013-05-13 2 views
0

가정 HTML 코드입니다 :Selenium webdriver를 사용하여 링크가 깨지지 않았는지 확인하는 방법은 무엇입니까?

<a href="http://www.google.com">Google</a> 

코드를 다음으로, 나는 href가이 링크를위한 것입니다 있는지 확인 할 수 있습니다

expected_href = "http://www.google.com" 
actual_href = driver.find_element(:tag_name, "a").attribute("href") 

unless actual_href == expected_href 
    puts "Link is incorrect" 
end 

그러나 나는 확실히 링크 "http://www.google.com을 만들고 싶어 "가 부러지지 않는다는 의미는"http://www.google.com "의 응답은 상태가"200 "이어야합니다.

어떻게 테스트 할 수 있습니까? HTTP 요청을 테스트 할 Ruby 라이브러리가 있습니까? 여기

+0

'broken' 무엇을 의미? 같은 정보가 더 필요합니다. –

+0

링크를 열지 않고 테스트 해보고 싶습니다 (링크 클릭을 피하는 것을 의미합니다). Ruby 라이브러리를 사용하여 url에 요청하고 응답을받습니다. 응답은 status = 200입니다. – TDHM

답변

0

URI doc

require 'uri' 

expected_href = "http://www.google.com" 
actual_href = "http://google.com" 
uri1 = URI(actual_href) 
uri2 = URI(expected_href) 
puts "Link is incorrect" unless [uri1.host,uri1.scheme] == [uri2.host,uri2.scheme] 
#=> Link is incorrect 

이다 또는 당신은 나를 위해 작동 코드에 따라 다른 방법 Net HTTP get source code and status

+0

위 코드는 URL을 요청하지 않으므로 & status를 얻을 수 없습니다. 그러나 당신이 지적한 링크는 매우 유용합니다. 이러한 링크를 사용하여 문제를 해결할 수있었습니다. 도와 주셔서 감사합니다! – TDHM

+0

흠 거기에 여러 가지 방법으로 문제를 해결할 수 있고 내가 아는 모든 가능한 방법을 제공했습니다. That 's it :) –

0

여기를 찾아보실 수 있습니다 :

require 'open-uri' 
require 'selenium-webdriver' 

expected_status = ["200", "OK"] 

link = driver.find_element(:tag_name, "a").attribute("href") 
io = open(link) 
link_status = io.status 

unless expected_status == link_status 
    puts "Link is broken" 
end 
+0

이것은이 커뮤니티에서 좋지 않습니다. 당신은 내가 당신에게 준 대답을 복제하고 있습니다. 아마 ** 편집 **으로 귀하의 게시물에 넣을 수 있습니다. –

+0

질문은 selenium-webdriver를 사용하여 반환 상태를 확인하는 방법입니까? 'open-uri '를 사용하여 해결책을 제시해도 문제에 답할 수 없습니다. – jmervine

관련 문제