有一个使用 JSF 开发的数据驱动的 Web 应用程序。是否有任何工具可以帮助查找导致 404 页面的链接?目前,我们只有在有人手动点击并获得 404 时才知道,这可能是由于查询无效或任何其他原因造成的。链接是带有隐藏参数的动态链接,所以我认为静态链接检查器将不起作用。Selenium 可能是一种可能性,但我们必须编写代码来覆盖所有可能的路径。
有什么建议么 ?
有一个使用 JSF 开发的数据驱动的 Web 应用程序。是否有任何工具可以帮助查找导致 404 页面的链接?目前,我们只有在有人手动点击并获得 404 时才知道,这可能是由于查询无效或任何其他原因造成的。链接是带有隐藏参数的动态链接,所以我认为静态链接检查器将不起作用。Selenium 可能是一种可能性,但我们必须编写代码来覆盖所有可能的路径。
有什么建议么 ?
您可以使用以下代码获取网页中的所有链接并检查每个链接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);
}
让我知道这是否对您有帮助。