2017-12-21 10 views
2

서버 응답 코드 및 페이지 제목을 사용하여 웹 사이트의 링크를 확인하려고 시도하는 중, 아래 표시된 코드를 통해 발견 된 서버 응답은 200이며 페이지 제목도 모든 페이지에서 동일합니다. 다음Selenium에서 500 오류를 나타내는 링크의 유효성을 검사하는 방법은 무엇입니까?

코드는 :

if(url == null || url.isEmpty()) 
{ 
System.out.println("URL is either not configured for anchor tag or it is 
empty"); 
objExcelFile.writeExcel(filePath,"skipped_links",url); 

     } 

     else if(!url.startsWith(homePage)){ 

      System.out.println("URL belongs to another domain, skipping it."); 
      objExcelFile.writeExcel(filePath,"skipped_links",url); 

     } 
     else{ 
     try { 
      huc = (HttpURLConnection)(new URL(url).openConnection()); 

      huc.setRequestMethod("HEAD"); 

      huc.connect(); 

      respCode = huc.getResponseCode(); 

      if(respCode != 200){ 
       System.out.println(url+" is a broken link"); 
       String Actualtitle = driver.getTitle(); 
       System.out.println(Actualtitle); 
       System.out.println(respCode); 



       objExcelFile.writeExcel(filePath,"broken_links",url); 


      } 
      else{ 
       String Actualtitle = driver.getTitle(); 
       System.out.println(Actualtitle); 
       if (Actualtitle.contentEquals(unexpectedTitle)){ 
        System.out.println(url+ " is a broken link"); 
       objExcelFile.writeExcel(filePath,"broken_links",url); 
       } else { 
        System.out.println(url+ " is a valid link"); 
        System.out.println(respCode); 

       objExcelFile.writeExcel(filePath,"valid_links",url); 
       } 

      } 

     } catch (MalformedURLException e) { 

      e.printStackTrace(); 
     } 

헤더는 그대로이지만 링크 헤더 (500) 아래의 에러를 도시한다. 문제는 페이지에 500 오류가 표시 되더라도 서버 응답 코드가 200으로 표시되므로이 링크의 연결이 끊어 졌는지 여부를 확인할 수 없습니다.

문제의 스크린 샷입니다. 페이지 나는 검증하고 있습니다 :

huc.connect(); 

당신은 많은 for() 루프를 작성할 수 있습니다

enter image description here

+3

시작에 SO : S는 다음과 getResponseCode() 메소드를 호출하는 Response Code 중 어느 상태를 확인한다. 무엇을보고 [묻는다]를 보려면 [도움]을 방문하십시오. 힌트 : 노력과 코드 게시 – mplungjan

답변

0

당신이 같이) (연결 을 유도하면

if (huc.getResponseCode() == 200) 
{ 
    System.out.println(linkURL + " - " + httpUrlConnect.getResponseMessage()); 
} 

if (huc.getResponseCode() == 500) 
{ 
    System.out.println(linkURL + " - " + httpUrlConnect.getResponseMessage()); 
} 

if (huc.getResponseCode() == 404) 
{ 
    System.out.println(linkURL + " - " + httpUrlConnect.getResponseMessage()); 
} 

if (huc.getResponseCode() == 402) 
{ 
    System.out.println(linkURL + " - " + httpUrlConnect.getResponseMessage()); 
} 

if (huc.getResponseCode() == httpUrlConnect.HTTP_NOT_FOUND) 
{ 
    System.out.println(
      linkURL + " - " + huc.getResponseMessage() + " - " + huc.HTTP_NOT_FOUND); 
} 


} catch (IOException e) 
{ 
    System.out.println(e.getMessage()); 
} 
+0

하지만 문제는 유효한 링크 용으로 200이라는 응답 코드가 표시된다는 것입니다. 페이지에 500 개의 오류가 표시되지만 코드를 사용하면 응답 코드는 200으로 간주됩니다. 유효한 링크로 표시됩니다. 이 링크가 깨 졌음을 표시하는 방법을 찾아야합니다. 서버 응답 코드는이 경우 유효한 링크를 확인할 수 없습니다. 그렇게 할 수있는 더 좋은 방법을 제안 해 주시겠습니까? –

+0

@ShauryaNigam ResponseCode를 확인하는 가장 포괄적 인 방법을 제공해 왔습니다. 개별적인 유효한 링크가 기본 프로토콜 및 표준에 따라 응답하지 않으면 Selenium/Java는이를 해결할 수 없습니다. 하지만 내 대답이 귀하의 문제를 해결한다고 생각합니다. 답변을 수락하십시오. – DebanjanB

+0

귀하의 답변에 진심으로 감사드립니다. 그러나 제 문제는 아직 해결되지 않았습니다. 이 문제에 대한 해결책이 필요합니다. –