Hvordan Finne Ødelagte Koblinger Ved Hjelp Av Selenium WebDriver?
hvilke tanker kommer til å tenke når du kommer over 404/Side Ikke Funnet/Døde Hyperkoblinger på et nettsted? Aargh! Du vil finne det irriterende når du kommer over ødelagte hyperkoblinger, som er den eneste grunnen til at du bør kontinuerlig fokusere på å fjerne eksistensen av ødelagte koblinger i ditt webprodukt (eller nettsted). I stedet for en manuell inspeksjon kan du utnytte automatisering for ødelagt koblingstesting ved Hjelp Av Selenium WebDriver.
når en bestemt kobling brytes og en besøkende lander på siden, påvirker den sidens funksjonalitet og resulterer i en dårlig brukeropplevelse. Døde koblinger kan skade produktets troverdighet, som det ‘ kan ‘ gi et inntrykk til besøkende at det er en minimal fokus på opplevelsen.
hvis webproduktet ditt har mange sider (eller lenker) som resulterer i en 404-feil (eller siden ikke funnet), vil produktrangeringen på søkemotorer (F. Eks. Google) også bli sterkt påvirket. Fjerning av døde lenker er en av de integrerte delene AV SEO (Search Engine Optimization) aktivitet.
i Denne delen Av Selenium WebDriver tutorial series, dykker vi dypt inn i å finne ødelagte koblinger ved Hjelp Av Selenium WebDriver. Vi har demonstrert brutt link testing ved Hjelp Av Selen Python, Selen Java, Selen C#, Og Selen PHP.
Introduksjon Til Brutte Lenker I Webtesting
enkelt sagt er brutte lenker (eller døde lenker) i et nettsted (eller webapp) koblinger som ikke kan nås og ikke fungerer som forventet. Koblingene kan være midlertidig nede på grunn av serverproblemer eller feil konfigurert på baksiden.
Bortsett fra sider som resulterer i 404-feil, er andre fremtredende eksempler på ødelagte koblinger misformede Nettadresser, lenker til innhold(f. eks. dokumenter, pdf, bilder, etc.) som har blitt flyttet eller slettet.
Fremtredende Årsaker Til Brutte Lenker
her er noen av de vanligste årsakene bak forekomsten av brutte lenker (døde lenker eller link råtner):
- Feil ELLER feilstavet URL angitt av brukeren.
- Strukturelle endringer på nettstedet (dvs. permalenker) med URL-omdirigeringer eller interne omdirigeringer er ikke riktig konfigurert.
- Lenker til innhold som videoer, dokumenter, etc. som enten er flyttet eller slettet. Hvis innholdet flyttes, skal de interne koblingene omdirigeres til de angitte koblingene.
- midlertidig nedetid på nettstedet på grunn av vedlikehold av nettstedet som gjør nettstedet midlertidig utilgjengelig.
- Ødelagte HTML-koder, JavaScript-feil, feil HTML/CSS-tilpasninger, ødelagte innebygde elementer, etc., innenfor siden ledende, kan føre til ødelagte koblinger.
- geolokasjonsbegrensninger hindrer tilgang til nettstedet fra bestemte IP-adresser (hvis de er svartelistet) eller bestemte land i verden. Geolokasjonstesting med Selen bidrar til å sikre at opplevelsen er skreddersydd for stedet (eller landet) hvor nettstedet er tilgjengelig.
Hvorfor bør Du sjekke Ødelagte Koblinger?
Brutte koblinger er en stor turn-off for de besøkende som lander på nettstedet ditt. Her er noen av de viktigste grunnene til hvorfor du bør se etter ødelagte koblinger på nettstedet ditt:
- Ødelagte Koblinger kan skade brukeropplevelsen.
- Fjerning av ødelagte (eller døde) koblinger er viktig FOR SEO( Søkemotoroptimalisering), da det kan påvirke nettstedets rangering på søkemotorer(F. Eks. Google).
Testing Av Brutte lenker kan gjøres ved Hjelp Av Selenium WebDriver på en nettside, som igjen kan brukes til å fjerne nettstedets døde lenker.
Brutte Koblinger Og HTTP-Statuskoder
når en bruker besøker et nettsted, sendes en forespørsel fra nettleseren til nettstedets server. Serveren svarer på nettleserens forespørsel med EN tresifret kode kalt HTTP-Statuskoden.’
EN HTTP-Statuskode er serverens svar på en forespørsel sendt fra nettleseren. DISSE HTTP-Statuskodene anses å være ekvivalente med samtalen mellom nettleseren (fra HVILKEN URL-forespørsel sendes) og serveren.
selv om FORSKJELLIGE HTTP-Statuskoder brukes til forskjellige formål, er de fleste kodene nyttige for å diagnostisere problemer på nettstedet, minimere nedetid på nettstedet, antall døde lenker og mer. Det første sifferet i hver tresifret statuskode begynner med tallene 1~5. Statuskodene er representert som 1xx, 2xx.., 5xx for å angi statuskoder i det aktuelle området. Da hvert av disse områdene består av en annen klasse serverrespons, begrenser vi diskusjonen TIL HTTP-Statuskoder som presenteres for ødelagte koblinger.
her er de vanlige statuskodeklassene som er nyttige for å oppdage ødelagte koblinger Med Selen:
KLASSER AV HTTP-Statuskode | Beskrivelse |
---|---|
1xx | Serveren tenker fortsatt gjennom forespørselen. |
2xx | forespørselen sendt av nettleseren ble fullført og forventet svar ble sendt til nettleseren av serveren. |
3xx | dette indikerer at en omdirigering utføres. For eksempel er 301 redirect populært brukt for å implementere permanente omdirigeringer på et nettsted. |
4xx | dette indikerer at enten en bestemt side (eller et komplett nettsted) ikke kan nås. |
5xx | dette indikerer at serveren ikke kunne fullføre forespørselen, selv om en gyldig forespørsel ble sendt av nettleseren. |
HTTP Statuskoder presentert på påvisning Av Ødelagte Koblinger
Her er noen av DE vanlige HTTP Statuskoder presentert av webserveren på møter en ødelagt link:
HTTP-Statuskode | Beskrivelse |
---|---|
400 (Ugyldig Forespørsel) | serveren kan ikke behandle forespørselen da DEN nevnte NETTADRESSEN er feil. |
400 (Bad Request-Bad Host) | dette indikerer at vertsnavnet er ugyldig på grunn som forespørselen ikke kan behandles. |
400 (Bad Request-Bad URL) | dette indikerer at serveren ikke kan behandle forespørselen da den angitte NETTADRESSEN er feilformet (dvs.manglende parenteser, skråstreker, etc.). |
400 (Bad Request-Timeout) | dette indikerer AT HTTP-forespørslene er tidsavbrutt. |
400 (Ugyldig Forespørsel-Tom) | svaret som returneres av serveren, er tomt uten innhold og ingen svarkode. |
400 (Ugyldig Forespørsel-Reset) | dette indikerer at serveren ikke kan behandle forespørselen, da den er opptatt med å behandle andre forespørsler, eller at den har blitt feilkonfigurert av områdeeieren. |
403 (Forbudt) | en ekte forespørsel sendes til serveren, men den nekter å oppfylle det samme, da autorisasjon er nødvendig. |
404 (Page Not Found) | ressursen (eller siden) er ikke tilgjengelig på serveren. |
408 (Forespørsel Tidsavbrudd) | serveren har tidsavbrudd venter på forespørselen. Klienten (dvs. nettleseren) kan sende den samme forespørselen innen den tid serveren er forberedt på å vente. |
410 (Borte) | EN HTTP-Statuskode som er mer permanent enn 404 (Side Ikke funnet). 410 betyr at siden Er Borte. siden er ikke tilgjengelig på serveren, og ingen videresendingsmekanisme (eller omdirigering) er satt opp. Lenkene peker til en 410 side sender besøkende til en død ressurs. |
503 (Service Unavailable) | dette indikerer at serveren er midlertidig overbelastet, på grunn av hvilken den ikke kan behandle forespørselen. Det kan også bety at vedlikehold utføres på serveren, noe som indikerer søkemotorene om nettstedets midlertidige nedetid. |
Hvordan Finne Ødelagte Koblinger Ved Hjelp Av Selen WebDriver?
Uavhengig av språket Som brukes Med Selen WebDriver, forblir de veiledende prinsippene for broken link testing ved Hjelp Av Selen den samme. Her er fremgangsmåten for ødelagte koblinger testing Ved Hjelp Av Selen WebDriver:
- Bruk taggen til å samle inn detaljer om alle koblingene som er tilstede på nettsiden.
- Send EN HTTP-forespørsel for hver kobling.
- Bekreft den tilsvarende svarkoden mottatt som svar på forespørselen som ble sendt i forrige trinn.
- Valider om koblingen er brutt eller ikke basert på svarkoden sendt av serveren.
- Gjenta trinn (2-4) for hver kobling som finnes på siden.
i Denne Selenium WebDriver-opplæringen vil vi demonstrere hvordan du utfører broken link testing ved Hjelp Av Selenium WebDriver I Python, Java, C# og PHP. Testene er utført på (Chrome 85.0 + Windows 10) kombinasjon, og utførelsen er utført på den skybaserte Selen Grid levert Av LambdaTest.
for å komme i gang Med LambdaTest, opprett en konto på plattformen og merk brukernavnet & tilgangsnøkkel tilgjengelig fra profildelen På LambdaTest. Nettleseren evner er generert ved Hjelp LambdaTest Evner Generator.
her er testscenariet som brukes til å finne ødelagte koblinger på et nettsted Ved Hjelp Av Selen:
Testscenario
- Gå Til LambdaTest Blog, dvs.https://www.lambdatest.com/blog/ På Chrome 85.0
- Samle alle koblingene som er tilstede på siden
- Send HTTP-forespørsel for hver lenke
- skriv ut om koblingen Er Brutt eller ikke på terminalen
Det Er Viktig Å Merke Seg At Tiden Som Brukes I Brutte Lenker Testing Ved Hjelp Av Selen Avhenger Av Antall Lenker Som Er Tilstede På nettsiden Under Test.’Jo mer antall lenker på siden, jo mer tid vil bli brukt på å finne ødelagte koblinger. For eksempel Har LambdaTest et stort antall lenker (~150+); derfor kan prosessen med å finne ødelagte koblinger ta litt tid (ca.noen få minutter).
KJØR TESTSKRIPTET PÅ SELEN GRID
2000+ Nettlesere OG OS
GRATIS REGISTRERING
Broken Link Testing Ved Hjelp Av Selen Java
Implementering
Kode Gjennomgang
1. Importer de nødvendige pakkene
metodene i HttpURLConnection-pakken brukes til å sende HTTP-forespørsler og fange HTTP-Statuskoden (eller svaret).
metodene i regex.Pattern package sjekk om den tilsvarende lenken inneholder en e – postadresse eller telefonnummer ved hjelp av en spesialisert syntaks holdt i et mønster.
1
2
|
importer java. net. HttpURLConnection;
importer java.util.regex.Mønster;
|
2. Samle linkene til stede på siden
linkene til stede PÅ URL under test (dvs. LambdaTest Blogg) er plassert ved hjelp av tagname I Selen. Merkenavnet som brukes til å identifisere elementet (eller lenken) er ‘a’.
koblingene er plassert i en liste for å iterere gjennom listen for å sjekke ødelagte koblinger på siden.
1
|
Liste < WebElement> lenker = driver.findElements (Av.tagName («a»));
|
3. Iterere Gjennom Nettadressene
Iteratorobjektet brukes til å looping gjennom listen opprettet I Trinn (2)
1
|
Iterator < WebElement> lenke = lenker.iterator();
|
4. Identifiser Og Bekreft Nettadressene
en stund loop utføres til tiden Iterator (dvs. link) ikke har flere elementer å iterere. ‘Href’ av ankerkoden hentes, og det samme lagres I URL-variabelen.
1
2
3
|
mens (lenke.hasNext())
{
url = lenke.neste().getAttribute («href»);
|
Hopp over å sjekke koblingene hvis:
a. Koblingen er null eller tom
1
2
3
4
5
|
hvis ((url = = null) / / (url.isEmpty()))
{
System.ut.println («URL er enten ikke konfigurert for ankerkode eller den er tom»);
fortsett;
}
|
b. Lenken inneholder mailto eller telefonnummer
1
2
3
4
5
|
hvis ((url.startsWith (mail_to)) / / (url.startsWith (tlf)))
{
System.ut.println («e-Postadresse eller Telefon oppdaget»);
fortsett;
}
|
NÅR Du sjekker For LinkedIn-siden, ER HTTP-statuskoden 999. En Boolsk variabel (dvs ., LinkedIn) er satt til true for å indikere at det ikke er en ødelagt lenke.
1
2
3
4
5
|
hvis (url.startsWith (LinkedInPage)))
{
System.ut.println («URL starter Med LinkedIn, forventet statuskode er 999»);
bLinkedIn = sant;
}
|
5. Valider koblingene gjennom Statuskoden
metodene i HttpURLConnection-klassen gir bestemmelsen for å sende HTTP-forespørsler og fange HTTP-Statuskoden.
openConnection-metoden for URL-klassen åpner tilkoblingen til den angitte NETTADRESSEN. Den returnerer En URLConnection-forekomst som representerer en tilkobling til det eksterne objektet som refereres AV URL-ADRESSEN. Det er type-støpt Til HttpURLConnection.
1
2
3
4
5
6
7
|
HttpURLConnection urlconnection = null;
……………………………………….
……………………………………….
……………………………………….
urlconnection = (HttpURLConnection) (ny URL(url).openConnection());
url-tilkobling.setRequestMethod («HODE»);
|
setRequestMethod i HttpURLConnection-klassen angir metoden FOR URL-forespørsel. Forespørselstypen er satt TIL HODET slik at Bare Overskrifter returneres. På den annen side ville forespørselstype GET ha returnert dokumentlegemet, som ikke er nødvendig i dette bestemte testscenariet.
connect-metoden i HttpURLConnection-klassen etablerer tilkoblingen TIL URL-ADRESSEN og sender EN HTTP-forespørsel.
1
|
url-tilkobling.koble til();
|
getResponseCode-metoden returnerer HTTP-Statuskoden for den tidligere sendte forespørselen.
1
|
responseCode = urlconnection.getResponseCode();
|
FOR HTTP-Statuskoden er 400 (eller mer), økes variabelen som inneholder ødelagte koblinger (dvs. broken_links); ellers økes variabelen som inneholder gyldige koblinger (dvs.valid_links).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
if (responseCode)>= 400)
{
hvis ((bLinkedIn = = sann) & & (responseCode = = LinkedInStatus))
{
System.ut.println (url + «er En LinkedIn-Side og er ikke en ødelagt lenke»);
valid_links++;
}
annet
{
System.ut.println (url + «er en ødelagt lenke»);
broken_links++;
}
}
annet
{
System.ut.println (url + «er en gyldig lenke»);
valid_links++;
}
|
Utførelse
for brutte koblinger testing ved Hjelp Av Selen Java, opprettet Vi et prosjekt I IntelliJ IDEA. Den grunnleggende pom.xml-filen var tilstrekkelig for jobben!
her er execution snapshot, som indikerer 169 gyldige lenker og 0 ødelagte koblinger på LambdaTest Bloggsiden.
lenkene som inneholder e-postadresser og telefonnumre ble ekskludert fra søkelisten, som vist nedenfor.
du kan se at testen kjøres i skjermbildet nedenfor og blir fullført på 2 min 35 sekunder, som vist på Lambdatests automatiseringslogger.
Ødelagt Koblingstesting Ved Hjelp Av Selen Python
Implementering
Kodegjennomgang
1. Importer Moduler
Bortsett fra å importere Python-modulene For Selenium WebDriver, importerer vi også forespørselsmodulen. Forespørselsmodulen lar deg sende ALLE TYPER HTTP-forespørsler. Den kan også brukes for bestått parametere I URL, sende tilpassede overskrifter, og mer.
1
2
3
|
importer forespørsler
importer urllib3
fra forespørsler.unntak import MissingSchema, InvalidSchema, InvalidURL
|
2. Samle lenkene til stede på siden
lenkene til stede PÅ URL under test (dvs. LambdaTest Blogg) er funnet ved å finne web-elementer AV CSS Velgeren» a » eiendom.
1
|
lenker = driver . find_elements (Etter.CSS_SELECTOR, «a»)
|
Siden vi vil at elementet skal være iterbart, bruker vi find_elements-metoden (og ikke find_element-metoden).
3. Iterere Gjennom Nettadressene for validering
hodemetoden til forespørselsmodulen brukes til å sende EN HODEFORESPØRSEL til den angitte NETTADRESSEN. Get_attribute-metoden brukes på hver lenke for å få’ href ‘ – attributtet til ankerkoden.
head-metoden brukes primært i scenarier der bare status_code eller HTTP-overskrifter er påkrevd, og innholdet i filen (ELLER NETTADRESSEN) ikke er nødvendig. Hodet metoden returnerer forespørsler.Svarobjekt som også inneholder HTTP-Statuskoden (dvs.forespørsel.statuskode).
1
2
3
4
|
for lenke i lenker:
prøv:
request = forespørsler.leder (link.get_attribute (‘href’), data = {‘nøkkel’:’value’})
skriv ut («Status for» + lenke.get_attribute (‘href’) + » er » + str (forespørsel.status_code))
|
det samme settet med operasjoner utføres iterativt til alle ‘linkene’ som er tilstede på siden, er oppbrukt.
4. Valider koblingene Gjennom Statuskoden
HVIS HTTP-svarkoden for HTTP-forespørselen sendt i trinn(3) er 404 (Dvs. Siden Ikke funnet), betyr det at lenken er en ødelagt lenke. FOR koblinger som ikke er brutt, ER HTTP-Statuskoden 200.
1
2
3
4
|
hvis (forespørsel.status_code == 404):
broken_links = (broken_links + 1)
else:
valid_links = (valid_links + 1)
|
5. Hopp over irrelevante forespørsler
når de brukes På koblinger som ikke inneholder attributtet’ href ‘ (f.eks.), resulterer hodemetoden i et unntak(Dvs. MissingSchema, InvalidSchema).
1
2
3
4
5
6
|
except requests.exceptions.MissingSchema:
print(«Encountered MissingSchema Exception»)
except requests.exceptions.InvalidSchema:
print(«Encountered InvalidSchema Exception»)
except:
skriv ut («Oppdaget noen andre execption»)
|
disse unntakene er fanget, og det samme er trykt pa terminalen.
Utførelse
vi har brukt PyUnit (eller unittest) her, standard testramme I Python for ødelagte koblinger testing ved Hjelp Av Selen. Kjør følgende kommando på terminalen:
1
|
python Broken_Links.py
|
utførelsen vil ta rundt 2-3 minutter siden LambdaTest Bloggsiden består av ca 150 + lenker. Utførelsen skjermbildet nedenfor viser at siden har 169 gyldige lenker og null ødelagte lenker.
Du vil være vitne Til InvalidSchema-unntaket eller MissingSchema-unntaket noen steder, noe som indikerer at disse koblingene hoppes over fra evalueringen.
HOVEDFORESPØRSELEN Til LinkedIn (dvs.) resulterer i EN HTTP-Statuskode på 999. Som nevnt i denne tråden på StackOverflow, Filtrerer LinkedIn forespørslene basert på brukeragenten, og forespørselen resulterte I ‘Ingen Tilgang’ (dvs. 999 SOM HTTP-Statuskode).
vi bekreftet om LinkedIn-lenken som er tilstede på LambdaTest bloggsiden, er ødelagt eller ikke ved å kjøre den samme testen på det lokale Selenettet, noe som resulterte I HTTP/1.1 200 OK.
Broken Link Testing Ved Hjelp Av Selen C#
Implementering
Kode Gjennomgang
Nunit-rammen brukes til automatiseringstesting; vår tidligere blogg På Nunit Test automation Med Selen C# kan hjelpe deg med å komme i gang med rammeverket.
1. Inkluder HttpClient
HttpClient-navneområdet er lagt til for bruk gjennom using-direktivet. HttpClient-klassen I C # gir en grunnklasse for å sende HTTP-forespørsler og motta HTTP-svaret fra en ressurs som er identifisert av URI.
Microsoft anbefaler å bruke System. Net. Http.HttpClient i stedet For System.Net.HttpWebRequest; HttpWebRequest kan også brukes til å oppdage ødelagte koblinger I Selen C#.
1
2
|
bruke System. Net. Http;
bruke System.Tråder.Oppgaver;
|
2. Definere en asynkron metode som returnerer en oppgave
En asynkron testmetode er definert som Ved Hjelp Av GetAsync-metoden som sender EN GET-forespørsel til den angitte URI som en asynkron operasjon.
1
2
|
offentlig Async Oppgave LT_Broken_Links_Test()
{
|
3. Samle koblingene som er tilstede på siden
For det første oppretter vi En Forekomst Av HttpClient.
1
|
bruke var client = ny HttpClient();
|
lenkene til stede PÅ URL under test (dvs. LambdaTest Blogg) er samlet ved å finne web-elementer Av TagName » a » eiendom.
1
|
var links = driver . FindElements (Av.TagName («a»));
|
find_elements-metoden I Selen brukes til å finne koblingene på siden, da den returnerer en matrise (eller liste) som kan itereres for å verifisere arbeidbarheten til koblingene.
4. Iterere Gjennom Nettadressene for validering
koblingene som er plassert ved hjelp av find_elements-metoden, verifiseres i en for loop.
1
2
|
foreach (var link in links))
{
|
vi filtrerer linkene som inneholder / e-postadresser / telefonnumre / LinkedIn-adresser. Koblingene uten Koblingstekst blir også filtrert ut.
1
2
|
hvis (!(kobling.Tekst.Inneholder («E-Post») | | link.Tekst.Inneholder («https://www.linkedin.com») | | lenke.Tekst = = «» / / lenke.Lik (null)))
{
|
GetAsync-metoden For HttpClient-klassen sender EN GET-forespørsel til den tilsvarende URI som en asynkron operasjon. Argumentet Til GetAsync-metoden er verdien av ankerens href-attributt samlet inn Ved Hjelp Av GetAttribute-metoden.
evalueringen av asynkron-metoden er suspendert av venter-operatoren til fullføringen av den asynkrone operasjonen. Når den asynkrone operasjonen er fullført, returnerer venter-operatoren HttpResponseMessage som inneholder data-og statuskoden.
1
2
3
|
/* Få URI * /
HttpResponseMessage svar = venter klient.GetAsync (lenke.GetAttribute («href»));
System.Konsoll.WriteLine ($»URL: {link.GetAttribute («href»)} status er: {svar.Statuskode}»);
|
5. Valider koblingene Gjennom Statuskoden
Hvis HTTP-svarkoden (dvs. svar.StatusCode) FOR HTTP-forespørselen sendt i trinn(4) Er HttpStatusCode.OK (dvs. 200), betyr det at forespørselen ble fullført.
1
2
3
4
5
6
7
8
9
|
System.Console.WriteLine($»URL: {link.GetAttribute(«href»)} status is :{response.StatusCode}»);
if (response.StatusCode == HttpStatusCode.OK)
{
valid_links++;
}
else
{
broken_links++;
}
|
NotSupportedException and ArgumentNullException exceptions are handled as a part of exception handling.
1
2
3
4
5
6
7
8
|
catch (Exception ex)
{
if ((ex is ArgumentNullException) ||
(ex is NotSupportedException))
{
System.Console.WriteLine(«Exception occured\n»);
}
}
|
Execution
Her er execution snapshot, som viser at testen ble utført med hell.
Unntak har oppstått for lenker til ‘del ikoner’, Dvs.WhatsApp, Facebook, Twitter, etc. Bortsett fra disse koblingene, returnerer resten av koblingene på LambdaTest bloggsiden HttpStatusCode.OK (dvs. 200).
Ødelagt Koblingstesting Ved Hjelp Av Selen PHP
Implementering
Kodegjennomgang
1. Les sidekilden
file_get_contents-funksjonen i PHP brukes til å lese SIDENS HTML-kilde i En Strengvariabel (f.eks. $html).
1
2
|
$test_url = «https://www.lambdatest.com/blog/»;
$html = file_get_contents ($test_url);
|
2. Start DOMDocument-klassen
DOMDocument-klassen i PHP representerer et HELT HTML-dokument og fungerer som dokumenttreets rot.
1
|
$htmlDom = nytt DOMDocument;
|
3. Parse HTML på siden
Funksjonen DOMDocument:: loadHTML() brukes til å analysere HTML-kilden som finnes i $html. Ved vellykket utførelse returnerer funksjonen Et DOMDocument-objekt.
1
|
@$htmlDom – > lasthtml ($html);
|
4. Trekk ut koblingene fra siden
koblingene som er tilstede på siden, hentes ut ved hjelp av getElementsByTagName-metoden I DOMDocument-klassen. Elementene (eller koblinger) søkes basert på ‘a’ tag fra analyseres HTML kilde.
getElementsByTagName-funksjonen returnerer en ny Forekomst Av DOMNodeList som inneholder elementene (eller koblingene) av lokalt kodenavn (dvs. stikkord)
1
|
$lenker = $ htmlDom- > getElementsByTagName (‘en’);
|
5. Iterere Gjennom Nettadressene for validering
DOMNodeList, som ble opprettet I Trinn (4), krysses for å sjekke gyldigheten av koblingene.
1
2
3
|
foreach ($lenker som $link)
{
$linkText = $ link- > nodeValue;
|
detaljer om den tilsvarende lenken er oppnådd ved hjelp av attributtet ‘href’. GetAttribute-metoden brukes til det samme.
1
|
$linkHref = $ link- > getAttribute (‘href’);
|
Hopp over å sjekke koblingene hvis:
a. koblingen er tom
1
2
3
4
|
hvis (strlen (trim ($linkHref)) == 0)
{
fortsett;
}
|
b. Lenken er en hashtag eller en ankerkobling
1
2
3
4
|
hvis ($linkHref == ‘#’)
{
fortsett;
}
|
c. lenken inneholder mailto eller addtoany(dvs. sosiale delingsalternativer).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
function check_nonlinks($test_url, $test_pattern)
{
hvis (preg_match ($test_pattern, $test_url) = = usann)
{
returnere false;
}
annet
{
return true;
}
}
offentlig funksjon test_Broken_Links()
{
$pattern_1 = ‘ / \ baddtoany \ b/’;
$pattern_2 = ‘/ \ bmailto \ b/’;
…………………………………………………………..
…………………………………………………………..
…………………………………………………………..
hvis ((check_nonlinks($linkHref, $pattern_1)) / / (check_nonlinks ($linkHref, $pattern_2)))
{
skriv ut («\nadd_to_any eller e-post støtt»);
fortsett;
}
…………………………………………………………..
…………………………………………………………..
…………………………………………………………..
}
|
preg_match funksjonen bruker et regulært uttrykk (regex) for å utføre en case-insensitive søk etter mailto og addtoany. De regulære uttrykkene for mailto & addtoany er henholdsvis ‘ / \bmailto\b /’ & ‘/ \baddtoany\b/’.
6. Valider HTTP-Koden ved hjelp av cURL
vi bruker curl for å få informasjon om statusen til den tilsvarende lenken. Det første trinnet er å initialisere en krøllesesjon med ‘lenken’ som validering må gjøres på. Metoden returnerer en cURL-forekomst som skal brukes i den siste delen av implementeringen.
1
|
$curl = curl_init ($linkHref);
|
curl_setopt-metoden brukes til å angi alternativer på det gitte cURL-økthåndtaket (dvs.
1
|
curl_setopt ($curl, CURLOPT_NOBODY, sant);
|
curl_exec-metoden kalles for utførelse av den gitte krølleøkten. Den returnerer Sant ved vellykket utførelse.
1
|
$resultat = curl_exec ($curl);
|
Dette er den viktigste delen av logikken som sjekker for ødelagte koblinger på siden. Curl_getinfo-funksjonen som tar cURL-økthåndtaket (dvs. $curl) og CURLINFO_RESPONSE_CODE (dvs. CURLINFO_HTTP_CODE) brukes for å få informasjon om den siste overføringen. DEN returnerer HTTP Statuskode som svar.
1
|
$statuskode = curl_getinfo ($curl, CURLINFO_HTTP_CODE);
|
NÅR forespørselen er fullført, RETURNERES HTTP-Statuskoden på 200, og variabelen som inneholder gyldige koblinger (dvs. $valid_links) økes. For koblinger som resulterer I HTTP-Statuskoden på 400 (eller mer), utføres en kontroll hvis ‘lenken under test’ var Lambdatests, LinkedIn-Side. Som nevnt tidligere Vil LinkedIn-sidens statuskode være 999; derfor økes $valid_links.
for alle de andre koblingene som returnerte HTTP-Statuskoden på 400 (eller mer), økes variabelen som holder de ødelagte koblingene (dvs. $broken_links).
1
2
3
4
5
6
7
8
9
10
|
hvis (($linkedin_page_status)& &($statuskode == 999))
{
skriv ut («\nLink». $ linkHref . «Er LinkedIn Side og status er».$statuskode);
$ validlinks++;
}
annet
{
skriv ut («\nLink». $ linkHref . «er brutt link og status er».$statuskode);
$ ødelagte koblinger++;
}
|
Utførelse
Vi bruker PHPUnit framework for testing for ødelagte koblinger på siden. For å laste Ned PHPUnit framework, legg til filkomponisten.json i rotmappen og kjør komponist krever på terminalen.
Kjør følgende kommando på terminalen for å sjekke ødelagte koblinger I Selenium PHP.
1
|
leverandør \ bin \ phpunit tester\BrokenLinksTest.php
|
her er utførelsen øyeblikksbilde som viser totalt 116 gyldige lenker og 0 brutte linker på LambdaTest Bloggen. Som lenker for sosial deling (dvs. addtoany) og e-postadresse ignoreres, er totalantallet 116 (169 I Selen Python-testen).
Konklusjon
Brutte koblinger, også kalt døde koblinger eller råtne koblinger, kan hindre brukeropplevelsen hvis de er til stede på nettstedet. Ødelagte koblinger kan også påvirke rangeringen på søkemotorer. Derfor bør broken link testing gjennomføres med jevne mellomrom for aktiviteter knyttet til utvikling og testing av nettstedet.
i Stedet for å stole på tredjepartsverktøy eller manuelle metoder for å sjekke ødelagte koblinger på et nettsted, kan testing av ødelagte koblinger gjøres ved Hjelp Av Selenium WebDriver Med Java, Python, C# eller PHP. HTTP-Statuskoden, returnert når du åpner en hvilken som helst nettside, bør brukes til å sjekke ødelagte koblinger ved Hjelp Av Selenium-rammen.
Ofte Stilte Spørsmål
hvordan finner jeg ødelagte koblinger i selen Python?
for å sjekke de ødelagte koblingene, må du samle alle koblingene på nettsiden basert på taggen. Send DERETTER EN HTTP-forespørsel for koblingene og les HTTP-svarkoden. Finn ut om koblingen er gyldig eller ødelagt basert PÅ HTTP-svarkoden.
Hvordan sjekker jeg for ødelagte koblinger?
Følg disse trinnene for å kontinuerlig overvåke nettstedet for brutte koblinger Ved Hjelp Av Google Search Console:
- Logg På Google Search Console-kontoen din.
- Klikk på nettstedet du vil overvåke.
- Klikk Kravlesøk, og klikk Deretter Hent Som Google.
- når Google gjennomsøker området, klikker Du Kravlesøk For å få tilgang til resultatene, og deretter Klikker Du Kravlesøkfeil.
- under URL-Feil kan Du se ødelagte koblinger Som Google oppdaget under gjennomsøkingsprosessen.
Hvordan finner jeg ødelagte bilder på nettet ved hjelp av selen?
Besøk siden. Iterere gjennom hvert bilde I HTTP-Arkivet og se om det har en 404 statuskode. Lagre hvert ødelagt bilde i en samling. Kontroller at den ødelagte bildesamlingen er tom.
Hvordan får jeg alle koblingene i selen?
du kan få alle koblingene til stede på en nettside basert på<a > taggen til stede. Hver < en > – tag representerer en lenke. Bruk selen locators å finne alle slike koder lett.
Hvorfor er ødelagte lenker dårlige?
de kan skade brukeropplevelsen – når brukerne klikker på lenker og når blindspor 404-feil, blir de frustrert og kan aldri komme tilbake. De devaluere SEO innsats – Ødelagte koblinger begrense flyten av link egenkapital hele nettstedet, påvirker rangeringer negativt.
Himanshu Sheth
Himanshu Sheth Er en erfaren teknolog og blogger med mer enn 15 + års mangfoldig arbeidserfaring. Han jobber for tiden som ‘Lead Developer Evangelist’ og ‘Senior Manager’ På LambdaTest. Han er veldig aktiv med oppstartssamfunnet I Bengaluru (og down South) og elsker å samhandle med lidenskapelige grunnleggere på sin personlige blogg (som han har opprettholdt siden de siste 15+ årene).