Comment trouver les liens rompus à l'aide de Selenium WebDriver avec Java
Je veux vérifier les liens cassés sur un site web et je suis en utilisant ce code:
public static int invalidLink;
String currentLink;
String temp;
public static void main(String[] args) throws IOException {
//Launch The Browser
WebDriver driver = new FirefoxDriver();
//Enter URL
driver.get("http://www.applicoinc.com");
//Get all the links URL
List<WebElement> ele = driver.findElements(By.tagName("a"));
System.out.println("size:" + ele.size());
boolean isValid = false;
for (int i = 0; i < ele.size(); i++) {
isValid = getResponseCode(ele.get(i).getAttribute("href"));
if (isValid) {
System.out.println("ValidLinks:" + ele.get(i).getAttribute("href"));
driver.get(ele.get(i).getAttribute("href"));
List<WebElement> ele1 = driver.findElements(By.tagName("a"));
System.out.println("InsideSize:" + ele1.size());
for (int j=0; j<ele1.size(); j++){
isValid = getResponseCode(ele.get(j).getAttribute("href"));
if (isValid) {
System.out.println("ValidLinks:" + ele.get(j).getAttribute("href"));
}
else{
System.out.println("InvalidLinks:"+ ele.get(j).getAttribute("href"));
}
}
} else {
System.out.println("InvalidLinks:"
+ ele.get(i).getAttribute("href"));
}
}
}
}
public static boolean getResponseCode(String urlString) {
boolean isValid = false;
try {
URL u = new URL(urlString);
HttpURLConnection h = (HttpURLConnection) u.openConnection();
h.setRequestMethod("GET");
h.connect();
System.out.println(h.getResponseCode());
if (h.getResponseCode() != 404) {
isValid = true;
}
} catch (Exception e) {
}
return isValid;
}
}
En fait ce que vous voulez savoir? Est-il un problème dans votre code? Quelle est votre question?
OriginalL'auteur LearningCode | 2014-05-01
Vous devez vous connecter pour publier un commentaire.
J'aimerais garder en retournant un int, et ont juste la MalformedURLException être un cas particulier, de retour -1.
EDIT: Il semble que vous êtes en collant avec le booléen approche, comme je l'ai dit avant que cela a ses limites, mais devrait fonctionner ok pour la manifestation fins.
Il n'y a pas de raison de rechercher tous les éléments d'une deuxième fois en prenant l'approche que vous avez. Essayez ceci:
C'est du code non testé, donc si cela ne fonctionne pas, veuillez fournir plus de détails que juste dire "ça ne fonctionne pas", de fournir de sortie & toutes les traces de pile/messages d'erreur si possible. Cheers
regardez le code en haut..j'ai le modifier..
OriginalL'auteur Steve Weaver Crawford
Il semble que certains de vos attribut href contient des expressions qui ne sont pas identifiés comme des url.
Ce qui vient immédiatement à l'esprit est d'utiliser le bloc try catch pour identifier ces url.
Essayez le morceau de code suivant.
J'ai modifié getResponseCode pour retourner des valeurs booléennes en fonction de savoir si l'url est valide(true) ou invalide(false).
Espère que cela vous aide.
mon mauvais! J'ai fait une petite erreur dans le code. Je l'ai corrigé. Merci d'essayer de nouveau.
Cela ne fera que renvoyer false si c'est une URL mal formée ou une réponse 404. Au lieu de cela renvoie true si c'est une réponse 200, ou false pour tout les autres. Bien sûr, ce n'est pas encore parfait, car les redirections de retour dans les 300, mais il devrait vous cherchez dans la bonne direction
hey @perdu - sa me forçant à changer getresponsecode statique et ajouter une instruction de retour
Merci pour la suggestion. Je ne suis pas au courant sur les différents codes de réponse. Je viens de modifier le code @Learningcode posté.
OriginalL'auteur Sighil
Vous pouvez essayer de code ci-dessous.
Dans le code ci-dessus, je suis d'abord obtenir la liste des Url à partir de la première page. Maintenant, je suis à la navigation sur le premier lien de la Iie et de la page de l'obtention de toutes les Url, de cette façon, je vais continuer sur le stockage de toutes les URL en allant à chaque page une par une, jusqu'à ce que la profondeur est mentionné.
Après la collecte de toutes les Url, je vais vérifier la validité de chaque URL, un par un, et en retour Liste des Url avec la page d'erreur 404.
Espère que ça aide!
src:
https://softwaretestingboard.com/qna/1380/how-to-find-broken-links-images-from-page-using-webdriver#axzz4wM3UEZtq
OriginalL'auteur Mayur Shah