Miten löytää rikkinäisiä linkkejä seleenissä
ennen kuin keskustellaan siitä, miten löytää rikkinäisiä linkkejä Selenium Webdriverin avulla, käsitellään perustavanlaatuisempaa kysymystä.
Mitä ovat Rikkinäiset linkit?
aluksi linkki on HTML-objekti, jonka avulla käyttäjät voivat siirtyä verkkosivulta toiselle sitä napsauttamalla. Se on keino navigoida eri verkkosivujen välillä Internetissä.
katkennut linkki, jota usein kutsutaan myös kuolleeksi linkiksi, on sellainen, joka ei toimi ts. ei ohjaa verkkosivun se on tarkoitettu. Tämä tapahtuu yleensä, koska verkkosivusto tai tietty web-sivu on alhaalla tai sitä ei ole olemassa. Kun joku napsauttaa rikkinäistä linkkiä, tulee näkyviin Virheilmoitus.
Rikkinäiset linkit voivat johtua jonkinlaisesta palvelinvirheestä, joka puolestaan aiheuttaa vastaavan sivun toimintahäiriön eikä sitä näytetä. Kelvollisella URL-osoitteella on 2XX HTTP-tilakoodi. Rikkinäisillä linkeillä, jotka ovat käytännössä virheellisiä HTTP-pyyntöjä, on 4xx-ja 5xx-tilakoodit.
4xx-tilakoodi viittaa asiakaspuolen virheeseen, kun taas 5xx-tilakoodi viittaa yleensä palvelimen vastausvirheeseen.
HTTP-tilakoodit rikkoutuneille linkeille
HTTP-tilakoodi | määritelmä |
---|---|
400 (Bad Request) | palvelin ei voi käsitellä pyyntöä, koska URL on virheellinen |
400 (Bad Request-Bad Host) | palvelin ei voi käsitellä pyyntöä, koska palvelimen nimi on virheellinen |
400 (huono pyyntö-huono URL): | palvelin ei voi käsitellä pyyntöä, koska URL-osoite on väärässä muodossa; puuttuvat merkit, kuten sulut, viillot jne. |
400 (Bad Request-Empty) | palvelimen palauttama vastaus on tyhjä ilman sisältöä & ei vastauskoodia |
400 (Bad Request-Timeout) | HTTP-pyynnöt on aikakatkaistu |
400 (Bad Request-Reset) | palvelin ei pysty käsittelemään pyyntöä, koska sillä on kiire käsitellä muita pyyntöjä tai sivuston omistaja on määrittänyt sen väärin |
404 (Page Not Found) | Page is not available on the server |
403 (Kielletty) | palvelin kieltäytyy täyttämästä pyyntö, koska lupa vaaditaan |
410 (Gone) | Page is gone. Tämä koodi on pysyvämpi kuin 404 |
408 (pyynnön aikalisä) | palvelimella on aikalisä odottamassa pyyntöä. |
503 (Palvelu ei ole käytettävissä) | palvelin on tilapäisesti ylikuormitettu eikä voi käsitellä pyyntöä |
miksi etsiä rikkinäisiä linkkejä seleenistä?
jos käyttäjä napsauttaa rikkinäistä linkkiä, hänet ohjataan virhesivulle. Tämä luonnollisesti edistää sub-par käyttökokemusta. Broken links kumoaa tarkoitus ottaa sivuston ensinnäkin, koska käyttäjät eivät löydä tietoja tai palvelua he etsivät.
jokainen verkkosivuston linkki on testattava sen varmistamiseksi, että se toimii odotetulla tavalla. Kuitenkin, koska useimmat sivustot ovat satoja (joskus, tuhansia) linkkejä tarvitaan, jotta ne toimivat, manuaalinen testaus jokaisen linkin vaatisi kohtuuttoman paljon aikaa, vaivaa ja resursseja. Lisäksi automatisoitu Seleenitestaus on vaihtoehto, se olisi täysin tarpeetonta.
Lue Lisää: Kuinka ottaa ruutukaappauksia seleenissä
yleiset syyt Katkenneille linkeille
- 404 Sivua ei löytynyt – omistaja on poistanut kohdesivuston
- 400 Bad Request-palvelin ei voi käsitellä linkin käynnistämää HTTP-pyyntöä, koska Pyydetty URL-osoite on väärä
- käyttäjän palomuuriasetusten vuoksi selain ei voi käyttää kohdesivua
- linkki on kirjoitettu väärin
miten tunnistaa rikkoutuneet linkit Selenium Webdriverissä
Rikkinäisten linkkien tarkistaminen seleenissä on yksinkertainen prosessi. Web-sivulla Hyperlinkit toteutetaan HTML-Ankkuri (<a>) – tagilla. Kaikki script tarvitsee tehdä on paikantaa jokainen ankkuri tag web-sivun, saada vastaavat URL, ja ajaa läpi linkkejä tarkistaa, jos jokin niistä on rikki.
käytä seuraavia vaiheita tunnistaaksesi murtuneet linkit seleenissä
- kerää kaikki www-sivulla olevat linkit perustuen <a> tag
- lähetä HTTP-pyyntö jokaiselle Linkille
- Tarkista HTTP-vastauskoodi
- määritä, onko linkki kelvollinen vai rikki HTTP-vastauksen perusteella koodi
- toista prosessi kaikille linkeille, jotka on otettu ensimmäisellä askeleella
jos mietit, miten löytää rikkinäisiä kuvia selenium webdriverin avulla, käytä samaa prosessia.
Lue Lisää: Miten kaksoisnapsautus tehdään seleenissä
Rikkinäisten linkkien löytäminen seleenissä: esimerkki
package automationPractice;import java.io.IOException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.Iterator;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class BrokenLinks {private static WebDriver driver = null;public static void main(String args) {// TODO Auto-generated method stubString homePage = "http://www.zlti.com";String url = "";HttpURLConnection huc = null;int respCode = 200;driver = new ChromeDriver();driver.manage().window().maximize();driver.get(homePage);List<WebElement> links = driver.findElements(By.tagName("a"));Iterator<WebElement> it = links.iterator();while(it.hasNext()){url = it.next().getAttribute("href");System.out.println(url);if(url == null || url.isEmpty()){System.out.println("URL is either not configured for anchor tag or it is empty");continue;}if(!url.startsWith(homePage)){System.out.println("URL belongs to another domain, skipping it.");continue;}try {huc = (HttpURLConnection)(new URL(url).openConnection());huc.setRequestMethod("HEAD");huc.connect();respCode = huc.getResponseCode();if(respCode >= 400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}driver.quit();}}
Suorita Seleenitestit todellisilla laitteilla ilmaiseksi
käydään läpi koodi, jotta saadaan tarkempi käsitys sen toimivuudesta.
1. Tuo paketit
tuo alla oleva paketti oletuspaketteineen:
import java.net.HttpURLConnection;
tämän paketin menetelmien avulla testaaja voi lähettää HTTP-pyyntöjä ja kaapata HTTP-vastauskoodit, kun koodi palauttaa ne.
2. Kerää kaikki linkit verkkosivulta
Etsi kaikki linkit verkkosivulta ja aseta ne luetteloon:
List<WebElement> links = driver.findElements(By.tagName("a"));
Hanki iteraattori linkkien luettelon läpi siirtämiseksi:
Iterator<WebElement> it = links.iterator();
3: Tunnista ja validoi URL-osoitteet
tässä vaiheessa tarkistetaan, kuuluuko tietty URL kolmannen osapuolen verkkotunnukseen tai onko se tyhjä/nolla.
alla oleva koodi hakee ankkuri-tunnisteen href: n ja tallentaa sen URL-muuttujaan.
url = it.next().getAttribute("href");
jos URL on tyhjä tai tyhjä, ohita tämän jälkeen tehtävät vaiheet.
if(url == null || url.isEmpty()){System.out.println("URL is either not configured for anchor tag or it is empty");continue;}
jos URL kuuluu pääalueeseen, jatka. Jos se kuuluu kolmannen osapuolen verkkotunnuksen, ohita vaiheet tämän jälkeen.
if(!url.startsWith(homePage)){System.out.println("URL belongs to another domain, skipping it.");continue;}
4. Send HTTP request
HttpURLConnection-luokan menetelmät lähettävät HTTP-pyyntöjä ja kaappaavat HTTP-vastauskoodin. Siksi output of openConnection () menetelmä (URLConnection) on tyyppi valettu httpurlconnection.
huc = (HttpURLConnection)(new URL(url).openConnection());
jos testaajat asettavat pyynnön tyypiksi ”HEAD” eikä ”GET”, palautetaan vain otsikot, ei asiakirjarunko.
huc.setRequestMethod("HEAD");
kun testaaja käyttää connect () – menetelmää, todellinen yhteys URL-osoitteeseen muodostetaan ja HTTP-pyyntö lähetetään.
huc.connect();
5. Validoi linkit
käytä getresponsecode () – menetelmää saadaksesi HTTP-vastauskoodin aiemmin lähetettyyn HTTP-pyyntöön.
respCode = huc.getResponseCode();
Check link status (rikki tai ei) perustuu vastauskoodiin
if(respCode >= 400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}
Rikkinäisten linkkien löytäminen seleenistä on olennainen osa verkkosivujen kehittämistä ja testausta. Käyttämällä tässä artikkelissa kuvattua menetelmää testaajat voivat tunnistaa toimintahäiriöt linkit nopeasti ja oikein. Rikkoutuneiden linkkien päästäminen tuotantovaiheeseen vahingoittaisi huomattavasti käyttökokemusta, ja ne on estettävä äärimmäisen perusteellisesti. Siksi seleenin Rikkinäisten linkkien testaaminen on tärkeä osa testaajan työkalupakkia.