是否有用于在数据驱动的JSF应用程序中警告404页面的软件工具?

时间:2014-06-16 10:54:31

标签: jsf selenium-webdriver xenu linkchecker

使用JSF开发了一个数据驱动的Web应用程序。有没有什么工具可以帮助找到导致404页面的链接?目前,我们只有在有人手动点击并获得404时才会知道,这可能是由于查询无效或任何其他原因造成的。链接是具有隐藏参数的动态链接,因此我假设静态链接检查器不起作用。 Selenium可能是一种可能性,但我们必须编写代码来涵盖所有可能的路径。

有什么建议吗?

1 个答案:

答案 0 :(得分: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);
}

如果这有助于您,请告诉我。