Какво са счупени връзки?
Счупените връзки са връзки или URL адреси, които не са достъпни. Възможно е да не работят или да не функционират поради някаква грешка в сървъра
URL адресът винаги ще има състояние с 2xx, което е валидно. Има различни HTTP кодове на състоянието, които имат различни цели. За невалидна заявка състоянието на HTTP е 4xx и 5xx.
4xx клас код на състоянието е главно за грешка от страна на клиента, а 5xx клас кодове на състоянието е главно за грешка в отговора на сървъра.
Най-вероятно няма да можем да потвърдим дали тази връзка работи или не, докато не щракнем и потвърдим.
Защо трябва да проверите счупени връзки?
Винаги трябва да се уверите, че на сайта няма прекъснати връзки, тъй като потребителят не трябва да попада в страница за грешка.
Грешката се случва, ако правилата не се актуализират правилно или поисканите ресурси не съществуват на сървъра.
Ръчната проверка на връзките е досадна задача, тъй като всяка уеб страница може да има голям брой връзки и ръчният процес трябва да се повтори за всички страници.
Скриптът за автоматизация, използващ Selenium, който ще автоматизира процеса, е по-подходящо решение.
Как да проверите счупените връзки и изображения
За да проверите неработещите връзки, ще трябва да направите следните стъпки.
- Съберете всички връзки в уеб страницата въз основа на таг.
- Изпратете HTTP заявка за връзката и прочетете HTTP кода за отговор.
- Разберете дали връзката е валидна или неработеща въз основа на HTTP кода за отговор.
- Повторете това за всички заловени връзки.
Код за намиране на неработещи връзки на уеб страница
По-долу е кода на уеб драйвера, който тества нашия случай на употреба:
пакет автоматизацияPractice;импортиране на java.io.IOException;импортирайте java.net.HttpURLConnection;импортиране на java.net.MalformedURLException;внос java.net.URL;импортиране на java.util.Iterator;импортиране на java.util.List;внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;публичен клас BrokenLinks {частен статичен драйвер на WebDriver = нула;публична статична void main (String [] args) {// TODO Автоматично генериран мъниче от методString homePage = "http://www.zlti.com";URL адрес на низ = "";HttpURLConnection huc = нула;int respCode = 200;драйвер = нов ChromeDriver ();driver.manage (). window (). maximize ();driver.get (homePage);Списъквръзки = driver.findElements (By.tagName ("a"));Итератор it = links.iterator ();докато (it.hasNext ()) {url = it.next (). getAttribute ("href");System.out.println (url);if (url == null || url.isEmpty ()) {System.out.println („URL адресът или не е конфигуриран за котва, или е празен“);продължи;}if (! url.startsWith (homePage)) {System.out.println („URL адресът принадлежи на друг домейн, като го пропускате.“);продължи;}опитвам {huc = (HttpURLConnection) (нов URL адрес (url) .openConnection ());huc.setRequestMethod ("HEAD");huc.connect ();respCode = huc.getResponseCode ();ако (respCode> = 400) {System.out.println (url + "е прекъсната връзка");}друго {System.out.println (url + "е валидна връзка");}} catch (MalformedURLException e) {// TODO Автоматично генериран блок за уловe.printStackTrace ();} catch (IOException e) {// TODO Автоматично генериран блок за уловe.printStackTrace ();}}driver.quit ();}}
Обяснение на кода Пример
Стъпка 1: Импортиране на пакети
Импортирайте пакета по-долу в допълнение към пакетите по подразбиране:
импортирайте java.net.HttpURLConnection;
Използвайки методите в този пакет, ние можем да изпращаме HTTP заявки и да улавяме HTTP кодове за отговор от отговора.
Стъпка 2: Съберете всички връзки в уеб страницата
Идентифицирайте всички връзки в уеб страница и ги съхранявайте в Списък.
Списъквръзки = driver.findElements (By.tagName ("a"));
Получете Iterator, за да преминете през списъка.
Итераторit = links.iterator ();
Стъпка 3: Идентифициране и валидиране на URL
В тази част ще проверим дали URL адресът принадлежи на домейн на трета страна или дали URL адресът е празен / нулев.
Вземете href на котва и го съхранявайте в url променлива.
url = it.next (). getAttribute ("href");
Проверете дали URL е нула или празен и пропуснете останалите стъпки, ако условието е изпълнено.
if (url == null || url.isEmpty ()) {System.out.println („URL адресът или не е конфигуриран за котва, или е празен“);продължи;}
Проверете дали URL адресът принадлежи на основен домейн или на трета страна. Пропуснете останалите стъпки, ако принадлежи на домейн на трета страна.
if (! url.startsWith (homePage)) {System.out.println („URL адресът принадлежи на друг домейн, като го пропускате.“);продължи;}
Стъпка 4: Изпратете http заявка
Класът HttpURLConnection има методи за изпращане на HTTP заявка и улавяне на HTTP код за отговор. И така, изходът на метода openConnection () (URLConnection) се излива в HttpURLConnection.
huc = (HttpURLConnection) (нов URL адрес (url) .openConnection ());
Можем да зададем типа на заявката като „HEAD“ вместо „GET“. Така че се връщат само заглавки, а не тяло на документа.
huc.setRequestMethod ("HEAD");
При извикване на метод connect () се установява действителна връзка с url и заявката се изпраща.
huc.connect ();
Стъпка 5: Проверка на връзките
Използвайки метода getResponseCode (), можем да получим код за отговор на заявката
respCode = huc.getResponseCode ();
Въз основа на кода за отговор ще се опитаме да проверим състоянието на връзката.
ако (respCode> = 400) {System.out.println (url + "е прекъсната връзка");}друго {System.out.println (url + "е валидна връзка");}
По този начин можем да получим всички връзки от уеб страница и да отпечатаме дали връзките са валидни или счупени.
Надявам се, че този урок ще ви помогне при проверката на неработещи връзки с помощта на селен.
Как да получите ВСИЧКИ връзки на уеб страница
Една от често срещаните процедури при уеб тестване е да се тества дали всички връзки, присъстващи на страницата, работят. Това може да се направи удобно, като се използва комбинация от Java за всеки цикъл , findElements () & By.tagName ("a") метод.
Методът findElements () връща списък от уеб елементи с таг a. С помощта на цикъл за всеки се осъществява достъп до всеки елемент.
Кодът WebDriver по-долу проверява всяка връзка от началната страница на Mercury Tours, за да определи работещите и тези, които все още са в процес на изграждане.
внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;импортиране на org.openqa.selenium.chrome.ChromeDriver;импортиране на java.util.List;импортиране на java.util.concurrent.TimeUnit;внос org.openqa.selenium. *;публичен клас P1 {публична статична void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();String underConsTitle = "В процес на изграждане: Меркурийни обиколки";driver.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS);driver.get (baseUrl);СписъкlinkElements = driver.findElements (By.tagName ("a"));String [] linkTexts = нов String [linkElements.size ()];int i = 0;// извличаме текстовете на връзките на всеки елемент на връзкатаза (WebElement e: linkElements) {linkTexts [i] = e.getText ();i ++;}// тестваме всяка връзказа (String t: linkTexts) {driver.findElement (By.linkText (t)). click ();ако (driver.getTitle (). е равно на (underConsTitle)) {System.out.println ("\" "+ t +" \ ""+ "е в процес на изграждане.");} друго {System.out.println ("\" "+ t +" \ ""+ "работи.");}driver.navigate (). back ();}driver.quit ();}}
Резултатът трябва да бъде подобен на посочения по-долу.
Отстраняване на неизправности
В изолиран случай първата връзка, достъпна от кода, може да бъде връзката „Начало“. В такъв случай действието driver.navigate.back () ще покаже празна страница, тъй като първото действие отваря браузър. Шофьорът няма да може да намери всички други връзки в празен браузър. Така че IDE ще изведе изключение и останалата част от кода няма да се изпълни. Това може лесно да се обработи с помощта на цикъл If.