Kas ir bojātas saites?
Sadalītās saites ir saites vai URL, kas nav sasniedzami. Servera kļūdas dēļ tie var nedarboties vai nedarboties
URL vienmēr būs derīgs statuss ar 2xx. Pastāv dažādi HTTP statusa kodi, kuriem ir dažādi mērķi. Nederīga pieprasījuma HTTP statuss ir 4xx un 5xx.
4xx statusa koda klase galvenokārt paredzēta klienta puses kļūdai, un 5xx statusa kodu klase galvenokārt paredzēta servera atbildes kļūdai.
Visticamāk, mēs nevarēsim apstiprināt, vai šī saite darbojas, vai nē, kamēr mēs to noklikšķināsim un neapstiprināsim.
Kāpēc jums vajadzētu pārbaudīt sadaļas Broken links?
Jums vienmēr jāpārliecinās, ka vietnē nav bojātu saišu, jo lietotājam nevajadzētu nokļūt kļūdas lapā.
Kļūda rodas, ja kārtulas nav pareizi atjauninātas vai serverī nav pieprasīto resursu.
Manuāla saišu pārbaude ir garlaicīgs uzdevums, jo katrā tīmekļa lapā var būt daudz saišu, un manuālais process ir jāatkārto visām lapām.
Automatizācijas skripts, kurā tiek izmantots Selenium un kas automatizēs procesu, ir piemērotāks risinājums.
Kā pārbaudīt salauztās saites un attēlus
Lai pārbaudītu bojātās saites, jums būs jāveic šādas darbības.
- Apkopojiet visas saites tīmekļa lapā, pamatojoties uz tagu .
- Nosūtiet saites HTTP pieprasījumu un izlasiet HTTP atbildes kodu.
- Uzziniet, vai saite ir derīga vai bojāta, pamatojoties uz HTTP atbildes kodu.
- Atkārtojiet to visām saitēm.
Kods, lai tīmekļa lapā atrastu saites Broken
Zemāk ir tīmekļa draivera kods, kas pārbauda mūsu lietošanas gadījumu:
pakešu automatizācijaPrakse;importēt java.io.IOException;importēt java.net.HttpURLConnection;importēt java.net.MalformedURLException;importēt java.net.URL;importēt java.util.Iterator;importēt java.util.List;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase BrokenLinks {privāts statisks WebDriver draiveris = null;public static void main (String [] args) {// TODO Automātiski ģenerētās metodes spraudnisString homePage = "http://www.zlti.com";Virknes URL = "";HttpURLConnection huc = nulle;int respCode = 200;draiveris = jauns ChromeDriver ();draiveris.pārvaldīt (). logs (). maksimizēt ();draiveris.get (homePage);Sarakstāsaites = driver.findElements (By.tagName ("a"));Iterators it = links.iterator ();while (it.hasNext ()) {url = it.next (). getAttribute ("href");System.out.println (url);ja (url == null || url.isEmpty ()) {System.out.println ("URL vai nu nav konfigurēts enkura tagam, vai arī tas ir tukšs");Turpināt;}ja (! url.startsWith (homePage)) {System.out.println ("URL pieder citam domēnam, to izlaižot.");Turpināt;}izmēģināt {huc = (HttpURLConnection) (jauns URL (url) .openConnection ());huc.setRequestMethod ("GALVA");huc.connect ();respCode = huc.getResponseCode ();ja (respCode> = 400) {System.out.println (URL + "ir bojāta saite");}cits {System.out.println (URL + "ir derīga saite");}} nozveja (MalformedURLException e) {// TODO Automātiski izveidots uztveršanas blokse.printStackTrace ();} nozveja (IOException e) {// TODO Automātiski izveidots uztveršanas blokse.printStackTrace ();}}vadītājs.iziet ();}}
Koda skaidrojums Piemērs
1. darbība: importējiet pakas
Importēt zem pakotnes papildus noklusējuma pakotnēm:
importēt java.net.HttpURLConnection;
Izmantojot šīs pakotnes metodes, mēs varam nosūtīt HTTP pieprasījumus un uztvert HTTP atbildes kodus no atbildes.
2. solis: apkopojiet visas saites tīmekļa lapā
Identificējiet visas tīmekļa vietnes saites un saglabājiet tās sarakstā.
Sarakstāsaites = driver.findElements (By.tagName ("a"));
Iegūstiet Iterator, lai pārvietotos pa sarakstu.
Iteratorsit = links.iterator ();
3. darbība: URL identificēšana un apstiprināšana
Šajā daļā mēs pārbaudīsim, vai URL pieder trešās puses domēnam, vai URL ir tukšs / null.
Iegūstiet enkura taga href un saglabājiet to URL mainīgajā.
url = it.next (). getAttribute ("href");
Pārbaudiet, vai URL nav derīgs vai Tukšs, un izlaidiet atlikušās darbības, ja nosacījums ir izpildīts.
ja (url == null || url.isEmpty ()) {System.out.println ("URL vai nu nav konfigurēts enkura tagam, vai arī tas ir tukšs");Turpināt;}
Pārbaudiet, vai URL pieder galvenajam domēnam vai trešajai pusei. Izlaidiet atlikušās darbības, ja tas pieder trešās puses domēnam.
ja (! url.startsWith (homePage)) {System.out.println ("URL pieder citam domēnam, to izlaižot.");Turpināt;}
4. darbība: nosūtiet http pieprasījumu
HttpURLConnection klasē ir metodes, kā nosūtīt HTTP pieprasījumu un uztvert HTTP atbildes kodu. Tātad, openConnection () metodes (URLConnection) izvade tiek ierakstīta HttpURLConnection.
huc = (HttpURLConnection) (jauns URL (url) .openConnection ());
Mēs varam iestatīt pieprasījuma veidu kā "GALVA", nevis "IEGŪT". Tā ka tiek atgrieztas tikai galvenes, nevis dokumenta pamatteksts.
huc.setRequestMethod ("GALVA");
Atsaucot metodi connect (), tiek izveidots faktiskais savienojums ar vietrādi URL un pieprasījums tiek nosūtīts.
huc.connect ();
5. darbība: saišu pārbaude
Izmantojot getResponseCode () metodi, mēs varam iegūt atbildes kodu pieprasījumam
respCode = huc.getResponseCode ();
Pamatojoties uz atbildes kodu, mēs centīsimies pārbaudīt saites statusu.
ja (respCode> = 400) {System.out.println (URL + "ir bojāta saite");}cits {System.out.println (URL + "ir derīga saite");}
Tādējādi mēs varam iegūt visas saites no tīmekļa lapas un izdrukāt, vai saites ir derīgas vai bojātas.
Ceru, ka šī apmācība palīdzēs pārbaudīt salauztās saites, izmantojot selēnu.
Kā iegūt VISAS Web lapas saites
Viena no izplatītākajām tīmekļa testēšanas procedūrām ir pārbaudīt, vai darbojas visas lapā esošās saites. To var ērti izdarīt, izmantojot Java kombināciju katrai cilpai , findElements () un By.tagName ("a") metodi.
Metode findElements () atgriež tīmekļa elementu sarakstu ar tagu a. Izmantojot “for for each loop”, tiek piekļūts katram elementam.
Zemāk esošais WebDriver kods pārbauda katru saiti no Mercury Tours mājaslapas, lai noteiktu tās, kas darbojas un kuras joprojām tiek veidotas.
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.chrome.ChromeDriver;importēt java.util.List;importēt java.util.concurrent.TimeUnit;importa org.openqa.selenium. *;publiskā klase P1 {public static void main (String [] args) {Virknes bāzeUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();String underConsTitle = "Notiek izstrāde: Mercury Tours";driver.manage (). taimauti (). implicitlyWait (5, TimeUnit.SECONDS);draiveris.get (baseUrl);UzskaitietlinkElements = driver.findElements (By.tagName ("a"));Virkne [] linkTexts = jauna virkne [linkElements.size ()];int i = 0;// izvelciet katra saites elementa saišu tekstusdomēnam (WebElement e: linkElements) {linkTexts [i] = e.getText ();i ++;}// pārbaudīt katru saitipar (String t: linkTexts) {driver.findElement (By.linkText (t)). noklikšķiniet ();ja (draiveris.getTitle (). ir vienāds ar (underConsTitle)) {System.out.println ("\" "+ t +" \ ""+ "tiek izstrādāts.");} cits {System.out.println ("\" "+ t +" \ ""+ "darbojas.");}draiveris.navigate (). back ();}vadītājs.iziet ();}}
Rezultātam jābūt līdzīgam zemāk norādītajam.
TroubleShooting
Atsevišķā gadījumā pirmā saite, kurai piekļūst kods, varētu būt saite “Mājas”. Šādā gadījumā darbība driver.navigate.back () parādīs tukšu lapu, kad 1. darbība atver pārlūkprogrammu. Vadītājs nevarēs atrast visas citas saites tukšā pārlūkprogrammā. Tātad IDE radīs izņēmumu, un pārējais kods netiks izpildīts. To var viegli apstrādāt, izmantojot If cilpu.