다음 코드를 사용하여 웹 페이지의 모든 링크를 가져오고 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);
}
이 정보가 도움이되는지 알려주십시오.
좋은 작품이지만 "웹 페이지의 링크"라고 말하면 링크가 정적 인 하드 코딩 된 것을 의미합니다. 그러나이 응용 프로그램에는 동적으로 생성 된 페이지로 이동할 때만 나타나는 링크가 있습니다. 그래서 나는 수동 사용자를 시뮬레이트 할 셀레늄 테스트와 같은 것을 필요로한다고 생각한다. – Chakra
웹 사이트의 각 페이지마다 링크를 확인 하시겠습니까? 그렇다면 http://stackoverflow.com/questions/24257802/how-to-browse-a-whole-website-using-selenium/24316831#24316831에 대한 답변을 참조하십시오. 나는 당신이 그것을 알아낼 수있을 것이라고 확신합니다. 이것이 작동하는지 알려주세요. – Sighil