2014-06-16 2 views
0

JSF를 사용하여 개발 된 데이터 기반 웹 애플리케이션이 있습니다. 404 페이지로 연결되는 링크를 찾는 데 도움이되는 도구가 있습니까? 현재 우리는 누군가가 수동으로 클릭 할 때만 알게되고, 작동하지 않는 쿼리 또는 기타 다른 이유로 인해 404가 발생할 수 있습니다. 링크 숨겨진 된 매개 변수를 가진 동적 것들, 그래서 정적 링크 검사기 작동하지 않습니다 가정합니다. 셀레늄은 하나의 가능성 일 수 있지만 가능한 모든 경로를 다루는 코드를 작성해야합니다.데이터 기반 JSF 애플리케이션에서 404 페이지를 경고하는 소프트웨어 툴이 있습니까?

제안 사항?

답변

0

다음 코드를 사용하여 웹 페이지의 모든 링크를 가져오고 HttpURLConnection을 사용하여 각 링크를 확인하여 링크 상태를 확인할 수 있습니다.

WebDriver driver = new FirefoxDriver(); 
driver.get("urlOfWebsite"); 

List<WebElement> links = driver.findElements(By.tagName("a")); 

ArrayList<String> linksInvalid = new ArrayList<>(); 
ArrayList<String> linksResulting404 = new ArrayList<>(); 
for (WebElement link : links) { 
    URL u; 
    try { 
     u = new URL(link.getAttribute("href")); 

     HttpURLConnection huc = (HttpURLConnection) u.openConnection(); 
      huc.setRequestMethod("GET"); 

     huc.connect(); 
     int code = huc.getResponseCode(); 
     if (code == 404 || code == 400) { 
      //Add link text and href to linksResulting404 list 
      linksResulting404.add(link.getText() + " - " 
        + link.getAttribute("href")); 
     } 
    } catch (MalformedURLException e) { 
      //Add link text and href to linksResulting404 list 
     linksInvalid.add(link.getText() + " - " 
       + link.getAttribute("href")); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

System.out.println("Invalid links : "); 
for (String linkInvalid : linksInvalid) { 
    System.out.println(linkInvalid); 
} 

System.out.println("\nLinks resulting in 404/400"); 
for (String linkResulting404 : linksResulting404) { 
    System.out.println(linkResulting404); 
} 

이 정보가 도움이되는지 알려주십시오.

+0

좋은 작품이지만 "웹 페이지의 링크"라고 말하면 링크가 정적 인 하드 코딩 된 것을 의미합니다. 그러나이 응용 프로그램에는 동적으로 생성 된 페이지로 이동할 때만 나타나는 링크가 있습니다. 그래서 나는 수동 사용자를 시뮬레이트 할 셀레늄 테스트와 같은 것을 필요로한다고 생각한다. – Chakra

+0

웹 사이트의 각 페이지마다 링크를 확인 하시겠습니까? 그렇다면 http://stackoverflow.com/questions/24257802/how-to-browse-a-whole-website-using-selenium/24316831#24316831에 대한 답변을 참조하십시오. 나는 당신이 그것을 알아낼 수있을 것이라고 확신합니다. 이것이 작동하는지 알려주세요. – Sighil