Как да намерите всички / счупени връзки с помощта на Selenium Webdriver

Съдържание:

Anonim

Какво са счупени връзки?

Счупените връзки са връзки или URL адреси, които не са достъпни. Възможно е да не работят или да не функционират поради някаква грешка в сървъра

URL адресът винаги ще има състояние с 2xx, което е валидно. Има различни HTTP кодове на състоянието, които имат различни цели. За невалидна заявка състоянието на HTTP е 4xx и 5xx.

4xx клас код на състоянието е главно за грешка от страна на клиента, а 5xx клас кодове на състоянието е главно за грешка в отговора на сървъра.

Най-вероятно няма да можем да потвърдим дали тази връзка работи или не, докато не щракнем и потвърдим.

Защо трябва да проверите счупени връзки?

Винаги трябва да се уверите, че на сайта няма прекъснати връзки, тъй като потребителят не трябва да попада в страница за грешка.

Грешката се случва, ако правилата не се актуализират правилно или поисканите ресурси не съществуват на сървъра.

Ръчната проверка на връзките е досадна задача, тъй като всяка уеб страница може да има голям брой връзки и ръчният процес трябва да се повтори за всички страници.

Скриптът за автоматизация, използващ Selenium, който ще автоматизира процеса, е по-подходящо решение.

Как да проверите счупените връзки и изображения

За да проверите неработещите връзки, ще трябва да направите следните стъпки.

  1. Съберете всички връзки в уеб страницата въз основа на таг.
  2. Изпратете HTTP заявка за връзката и прочетете HTTP кода за отговор.
  3. Разберете дали връзката е валидна или неработеща въз основа на HTTP кода за отговор.
  4. Повторете това за всички заловени връзки.

Код за намиране на неработещи връзки на уеб страница

По-долу е кода на уеб драйвера, който тества нашия случай на употреба:

пакет автоматизация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 ();}}

Резултатът трябва да бъде подобен на посочения по-долу.

  • Достъпът до връзките към изображения се извършва чрез методите By.cssSelector () и By.xpath ().
  • Отстраняване на неизправности

    В изолиран случай първата връзка, достъпна от кода, може да бъде връзката „Начало“. В такъв случай действието driver.navigate.back () ще покаже празна страница, тъй като първото действие отваря браузър. Шофьорът няма да може да намери всички други връзки в празен браузър. Така че IDE ще изведе изключение и останалата част от кода няма да се изпълни. Това може лесно да се обработи с помощта на цикъл If.