Jak Najít Nefunkční Odkazy Pomocí Selenium WebDriver?

jaké myšlenky přijdou na mysl, když narazíte na 404/Stránka nenalezena / mrtvé hypertextové odkazy na webu? Aargh! Zjistíte, že je nepříjemné, když narazíte na nefunkční hypertextové odkazy, což je jediný důvod, proč byste se měli neustále soustředit na odstranění existence nefunkčních odkazů ve Vašem webovém produktu (nebo webové stránce). Namísto ruční kontroly můžete využít automatizaci pro testování nefunkčních odkazů pomocí Selenium WebDriver.

 nefunkční

zdroj

když je konkrétní odkaz přerušen a návštěvník přistane na stránce, ovlivňuje to funkčnost této stránky a má za následek špatnou uživatelskou zkušenost. Mrtvé odkazy by mohly poškodit důvěryhodnost vašeho produktu, protože by to mohlo vyvolat dojem vašich návštěvníků, že je minimální zaměření na zážitek.

pokud má váš webový produkt mnoho stránek (nebo odkazů), které vedou k chybě 404 (nebo stránka nebyla nalezena), bude hodnocení produktů ve vyhledávačích (např. Odstranění mrtvých odkazů je jednou z nedílnou součástí činnosti SEO (Search Engine Optimization).

v této části série výukových programů Selenium WebDriver se hluboce ponoříme do hledání nefunkčních odkazů pomocí Selenium WebDriver. Prokázali jsme nefunkční testování odkazů pomocí selen Python, selen Java, selen C# a selen PHP.

Úvod do nefunkčních odkazů v testování webu

jednoduše řečeno, nefunkční odkazy (nebo nefunkční odkazy) na webové stránce (nebo webové aplikaci) jsou odkazy, které nejsou dosažitelné a nefungují podle očekávání. Odkazy by mohly být dočasně vypnuty kvůli problémům se serverem nebo nesprávně nakonfigurovány na zadním konci.

404 - Stránka nenalezena

zdroj

kromě stránek, které mají za následek chybu 404, jsou dalšími významnými příklady neformovaných odkazů poškozená URL, odkazy na obsah (např. dokumenty, pdf, obrázky atd.).), které byly přesunuty nebo odstraněny.

prominentní důvody pro nefunkční odkazy

zde jsou některé z běžných důvodů výskytu nefunkčních odkazů (mrtvé odkazy nebo hniloby odkazů):

  • nesprávná nebo chybně napsaná adresa URL zadaná uživatelem.
  • strukturální změny na webu (tj. trvalé odkazy) s přesměrováním URL nebo interními přesměrováními nejsou správně nakonfigurovány.
  • odkazy na obsah, jako jsou videa, dokumenty atd. které jsou buď přesunuty nebo odstraněny. Pokud je obsah přesunut, měly by být „interní odkazy“ přesměrovány na určené odkazy.
  • dočasné prostoje webových stránek kvůli údržbě stránek, které činí webové stránky dočasně nepřístupnými.
  • nefunkční značky HTML, chyby JavaScriptu, nesprávné úpravy HTML / CSS, zlomené vložené prvky atd., v rámci stránky vedoucí, může vést k nefunkční odkazy.
  • geolokační omezení brání přístupu na webové stránky z určitých IP adres (pokud jsou na černé listině) nebo z konkrétních zemí světa. Testování geolokace pomocí selenu pomáhá zajistit, aby byl zážitek šitý na míru pro místo (nebo zemi), odkud je web přístupný.

proč byste měli zkontrolovat nefunkční odkazy?

nefunkční odkazy jsou velkým vypnutím pro návštěvníky, kteří přistanou na vašem webu. Zde jsou některé z hlavních důvodů, proč byste měli zkontrolovat nefunkční odkazy na vašem webu:

  • nefunkční odkazy mohou poškodit uživatelský dojem.
  • odstranění nefunkčních (nebo mrtvých) odkazů je nezbytné pro SEO (optimalizace pro vyhledávače), protože může ovlivnit hodnocení stránek ve vyhledávačích (např.

testování nefunkčních odkazů lze provést pomocí Selenium WebDriver na webové stránce, která může být zase použita k odstranění mrtvých odkazů webu.

nefunkční odkazy a stavové kódy HTTP

když uživatel navštíví webovou stránku, prohlížeč odešle požadavek na server webu. Server reaguje na požadavek prohlížeče třímístným kódem zvaným “ stavový kód HTTP.‘

stavový kód HTTP je odpověď serveru na požadavek odeslaný z webového prohlížeče. Tyto stavové kódy HTTP jsou považovány za rovnocenné konverzaci mezi prohlížečem (ze kterého je odeslán požadavek na adresu URL) a serverem.

ačkoli se pro různé účely používají různé stavové kódy HTTP, většina kódů je užitečná pro diagnostiku problémů na webu, minimalizaci prostojů webu, počtu mrtvých odkazů a dalších. První číslice každého třímístného stavového kódu začíná čísly 1~5. Stavové kódy jsou reprezentovány jako 1xx, 2xx.., 5xx pro označení stavových kódů v daném rozsahu. Protože každý z těchto rozsahů sestává z jiné třídy odezvy serveru, omezili bychom diskusi na stavové kódy HTTP prezentované pro nefunkční odkazy.

zde jsou běžné třídy stavového kódu, které jsou užitečné při detekci nefunkčních vazeb se selenem:

třídy stavového kódu HTTP popis
1xx Server stále přemýšlí o požadavku.
2xx požadavek odeslaný prohlížečem byl úspěšně dokončen a očekávaná odpověď byla odeslána do prohlížeče serverem.
3xx to znamená, že se provádí přesměrování. Například přesměrování 301 je populárně používáno pro implementaci trvalých přesměrování na webu.
4xx to znamená, že konkrétní stránka (nebo celý web) není dosažitelná.
5xx to znamená, že server nebyl schopen dokončit požadavek, i když byl prohlížečem odeslán platný požadavek.

stavové kódy HTTP prezentované při detekci nefunkčních odkazů

zde jsou některé z běžných Stavových kódů HTTP prezentovaných webovým serverem při setkání s nefunkčním odkazem:

stavový kód HTTP popis
400 (Špatný požadavek) server není schopen zpracovat požadavek, protože uvedená adresa URL je nesprávná.
400 (Bad Request-Bad Host) to znamená, že název hostitele je neplatný, kvůli kterému nelze požadavek zpracovat.
400 (Bad Request-Bad URL) to znamená, že server nemůže zpracovat požadavek, protože Zadaná adresa URL je poškozená (tj. chybějící závorky, lomítka atd.).
400 (Bad Request-Timeout) to znamená, že požadavky HTTP vypršely.
400 (Bad Request-Empty) odpověď vrácená serverem je prázdná bez obsahu a bez kódu odpovědi.
400 (Bad Request-Reset) to znamená, že server není schopen zpracovat požadavek, protože je zaneprázdněn zpracováním jiných požadavků nebo byl nesprávně nakonfigurován vlastníkem webu.
403 (Zakázáno) na server je odeslán skutečný požadavek, který však odmítá splnit, protože je vyžadována autorizace.
404 (Stránka nebyla nalezena) zdroj (nebo stránka) není na Serveru k dispozici.
408 (Request Time Out) server má časový limit čekání na požadavek. Klient (tj. prohlížeč) může odeslat stejný požadavek v době, kdy je server připraven čekat.
410 ( stavový kód HTTP, který je trvalejší než 404 (Stránka nebyla nalezena). 410 znamená, že stránka je pryč.
stránka není k dispozici na Serveru, ani nebyl nastaven žádný mechanismus přesměrování (nebo přesměrování). Odkazy směřující na stránku 410 posílají návštěvníky na mrtvý zdroj.
503 (služba není k dispozici) to znamená, že server je dočasně přetížen, kvůli kterému nemůže zpracovat požadavek. Může to také znamenat, že se na serveru provádí údržba, což naznačuje vyhledávačům dočasné prostoje webu.

jak najít nefunkční odkazy pomocí Selenium WebDriver?

bez ohledu na jazyk používaný s Selenium WebDriver zůstávají hlavní zásady pro testování přerušených odkazů pomocí selenu stejné. Zde jsou kroky pro testování nefunkčních odkazů pomocí Selenium WebDriver:

  1. pomocí značky shromažďujte podrobnosti o všech odkazech na webové stránce.
  2. odeslat požadavek HTTP pro každý odkaz.
  3. ověřte odpovídající kód odpovědi přijatý jako odpověď na žádost zaslanou v předchozím kroku.
  4. ověřte, zda je odkaz přerušený nebo ne, na základě kódu odpovědi zaslaného serverem.
  5. opakujte kroky (2-4) pro každý odkaz na stránce.

v tomto tutoriálu Selenium WebDriver bychom ukázali, jak provádět testování nefunkčních odkazů pomocí Selenium WebDriver v Pythonu, Javě, C# a PHP. Testy jsou prováděny na kombinaci (Chrome 85.0 + Windows 10) a provedení se provádí na cloudové selenové mřížce poskytované LambdaTest.

Chcete-li začít s LambdaTest, Vytvořte si účet na platformě a poznamenejte si uživatelské jméno & přístupový klíč dostupný v sekci Profil na Lambdatestu. Možnosti prohlížeče jsou generovány pomocí generátoru funkcí LambdaTest.

zde je testovací scénář používaný pro nalezení nefunkčních odkazů na webových stránkách pomocí selenu:

testovací scénář

  1. přejděte na blog LambdaTest, tj. https://www.lambdatest.com/blog/ v prohlížeči Chrome 85.0
  2. shromážděte všechny odkazy přítomné na stránce
  3. odeslat požadavek HTTP pro každý odkaz
  4. vytiskněte, zda je odkaz přerušený nebo ne na terminálu

je důležité si uvědomit, že čas strávený při testování nefunkčních odkazů pomocí selenu závisí na počtu odkazů přítomných na testované webové stránce.“Čím více odkazů na stránce, tím více času bude věnováno hledání nefunkčních odkazů. Například LambdaTest má obrovské množství odkazů (~150+); proto může proces hledání nefunkčních odkazů nějakou dobu trvat (přibližně několik minut).

Test na selenové mřížce

spusťte testovací skript na selenové mřížce

2000 + prohlížečů a OS

registrace zdarma

testování nefunkčního odkazu pomocí selenové Java

implementace

návod kódu

1. Importujte požadované balíčky

metody v balíčku HttpURLConnection se používají pro odesílání požadavků HTTP a zachycení stavového kódu HTTP (nebo odpovědi).

metody v regulárním výrazu.Balíček vzorů zkontrolujte, zda odpovídající odkaz obsahuje e-mailovou adresu nebo telefonní číslo pomocí specializované syntaxe držené ve vzoru.

1
2

import java. net. HttpURLConnection;
import java.util.regulární výraz.Vzor;

2. Sbírejte odkazy přítomné na stránce

odkazy přítomné na testované adrese URL (tj. Název značky použitý pro identifikaci prvku (nebo odkazu) je „a“.

odkazy jsou umístěny v seznamu pro iteraci v seznamu pro kontrolu nefunkčních odkazů na stránce.

1
seznam<WebElement> links = driver.findElements (podle.tagName(„a“);

3. Iterovat přes URL

objekt Iterátoru se používá pro opakování seznamu vytvořeného v kroku (2)

1
iterátor<WebElement> link = links.iterátor();

4. Identifikujte a ověřte URL

a while loop is executed till the time Iterator (tj, link) nemá více prvků iterovat. „Href“ značky kotvy je načtena a totéž je uloženo v proměnné URL.

1
2
3

zatímco (odkaz.hasNext())
{
url = odkaz.další().getAttribute („href“);

přeskočit kontrolu odkazů, pokud:

a. Odkaz je null nebo prázdný

1
2
3
4
5

pokud ((url == null) / / (url.ispty()))
{
systém.mimo.println („URL buď není nakonfigurováno pro kotevní značku, nebo je prázdné“);
pokračovat;
}

b. Odkaz obsahuje mailto nebo telefonní číslo

1
2
3
4
5

pokud ((url.startsWith (mail_to)) | / (url.startsWith (tel)))
{
systém.mimo.println („e-mailová adresa nebo telefon zjištěn“);
pokračovat;
}

při kontrole stránky LinkedIn je stavový kód HTTP 999. Booleovská proměnná (tj., LinkedIn) je nastavena na hodnotu true, což znamená, že se nejedná o nefunkční odkaz.

1
2
3
4
5

pokud (url.startsWith (LinkedInPage))
{
systém.mimo.println („URL začíná LinkedIn, očekávaný stavový kód je 999“);
bLinkedIn = true;
}

5. Ověřte odkazy pomocí stavového kódu

metody ve třídě HttpURLConnection poskytují ustanovení pro odesílání požadavků HTTP a zachycení stavového kódu HTTP.

metoda openConnection třídy URL otevře připojení k zadané adrese URL. Vrací instanci URLConnection představující připojení ke vzdálenému objektu, který je odkazován adresou URL. Je typově odlitý do HttpURLConnection.

1
2
3
4
5
6
7

HttpURLConnection urlconnection = null;
……………………………………….
……………………………………….
……………………………………….
urlconnection = (HttpURLConnection) (nová URL(url).openConnection());
urlconnection.setRequestMethod („hlava“);

setRequestMethod ve třídě HttpURLConnection nastaví metodu pro požadavek URL. Typ požadavku je nastaven na HEAD, takže jsou vráceny pouze záhlaví. Na druhou stranu, typ požadavku GET by vrátil tělo dokumentu, což se v tomto konkrétním testovacím scénáři nevyžaduje.

metoda připojení ve třídě HttpURLConnection naváže spojení s adresou URL a odešle požadavek HTTP.

1
urlconnection.připojit();

metoda getResponseCode vrací stavový kód HTTP pro dříve odeslaný požadavek.

1
responseCode = urlconnection.getResponseCode();

pro stavový kód HTTP je 400 (nebo více), proměnná obsahující počet nefunkčních odkazů (tj. broken_links) je zvýšena; jinak je proměnná obsahující platné odkazy (tj. valid_links) zvýšena.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

if (responseCode >= 400)
{
pokud ((bLinkedIn = = true) && (responseCode = = LinkedInStatus))
{
systém.mimo.println (url + „je stránka LinkedIn a není nefunkční odkaz“);
valid_links++;
}
else
{
systém.mimo.println (url + „je nefunkční odkaz“);
broken_links++;
}
}
else
{
systém.mimo.println (url + „je platný odkaz“);
valid_links++;
}

provedení

pro testování nefunkčních odkazů pomocí Selenium Java jsme vytvořili projekt v IntelliJ IDEA. Základní pom.xml soubor byl dostačující pro práci!

zde je spouštěcí snímek, který označuje 169 platných odkazů a 0 nefunkčních odkazů na stránce blogu LambdaTest.

provedení testu selen Java

odkazy obsahující e-mailové adresy a telefonní čísla byly vyloučeny ze seznamu vyhledávání, jak je uvedeno níže.

 Automation test Execution

na následujícím snímku obrazovky můžete vidět, jak je test spuštěn a dokončen za 2 minuty 35 sekund, jak je znázorněno na protokolech automatizace Lambdatestu.

LambdaTest Automation logs

testování nefunkčních odkazů pomocí Selenového Pythonu

implementace

návod kódu

1. Import modulů

kromě importu modulů Python pro Selenium WebDriver importujeme také modul požadavků. Modul žádosti umožňuje odesílat všechny druhy požadavků HTTP. Může být také použit pro předávání parametrů v URL, odesílání vlastních záhlaví a další.

1
2
3

import požadavků
import urllib3
z požadavků.výjimky import MissingSchema, InvalidSchema, InvalidURL

2. Sbírejte odkazy přítomné na stránce

odkazy přítomné na testované adrese URL (tj.

1
odkazy = řidič.find_elements (podle.CSS_SELECTOR, „a“)

protože chceme, aby byl prvek iterovatelný, používáme metodu find_elements (a ne metodu find_element).

3. Iterovat přes adresy URL pro ověření

metoda head modulu požadavků se používá k odeslání požadavku HEAD na zadanou adresu URL. Metoda get_attribute se používá na každém odkazu pro získání atributu „href“ značky kotvy.

metoda head se primárně používá ve scénářích, kde jsou vyžadovány pouze hlavičky status_code nebo HTTP a obsah souboru (nebo URL) není potřeba. Metoda head vrací požadavky.Objekt odpovědi, který také obsahuje stavový kód HTTP (tj. požadavek.status_code).

1
2
3
4

pro odkaz v odkazech:
zkuste:
request = requests.hlava (odkaz.get_attribute (‚href‘), data ={‚key‘:’value‘})
tisk („stav“ + odkaz.get_attribute (‚href‘) + “ is “ + str (request.status_code))

stejná sada operací se provádí iterativně, dokud nebudou vyčerpány všechny „odkazy“ na stránce.

4. Ověřte odkazy pomocí stavového kódu

pokud je kód odpovědi HTTP pro požadavek HTTP odeslaný v kroku (3) 404 (tj. stránka nebyla nalezena), znamená to, že odkaz je nefunkční odkaz. U odkazů, které nejsou rozbité, je stavový kód HTTP 200.

1
2
3
4

pokud (žádost.status_code == 404):
broken_links = (broken_links + 1)
else:
valid_links = (valid_links + 1)

5. Přeskočit irelevantní požadavky

při použití na odkazy, které neobsahují atribut ‚href‘ (např. mailto, telefon atd.).), metoda hlavy má za následek výjimku (tj. 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:
print („“)

tyto výjimky jsou zachyceny a totéž je vytištěno na terminálu.

provedení

zde jsme použili PyUnit (nebo unittest), výchozí testovací rámec v Pythonu pro testování nefunkčních odkazů pomocí selenu. Na terminálu spusťte následující příkaz:

1
python Broken_Links.py

provedení by trvalo asi 2-3 minuty, protože stránka blogu LambdaTest se skládá z přibližně 150+ odkazů. Níže uvedený screenshot provedení ukazuje, že stránka obsahuje 169 platných odkazů a nulové nefunkční odkazy.

na některých místech byste byli svědky výjimky InvalidSchema nebo výjimky MissingSchema, což znamená, že tyto odkazy jsou z hodnocení přeskočeny.

neplatná výjimka schématu

požadavek hlavy na LinkedIn (tj.) má za následek stavový kód HTTP 999. Jak je uvedeno v tomto vlákně na StackOverflow, LinkedIn filtruje požadavky na základě user-agent, a požadavek vyústil v ‚ Přístup odepřen ‚(tj, 999 jako stavový kód HTTP).

stavový kód HTTP

Ověřili jsme, zda je odkaz LinkedIn přítomný na stránce blogu LambdaTest poškozen nebo ne spuštěním stejného testu na místní síti selenu, což vedlo k HTTP / 1.1 200 OK.

testování nefunkčních odkazů pomocí selenu C#

implementace

návod kódu

rámec NUnit se používá pro automatizační testování; náš dřívější blog o automatizaci testů NUnit se selenem C# vám může pomoci začít s rámcem.

1. Zahrnout HttpClient

Jmenný prostor HttpClient je přidán pro použití pomocí směrnice using. Třída HttpClient v C# poskytuje základní třídu pro odesílání požadavků HTTP a přijímání odpovědi HTTP ze zdroje identifikovaného URI.

společnost Microsoft doporučuje používat System. Net. Http. HttpClient namísto System.Net.HttpWebRequest; HttpWebRequest lze také použít k detekci nefunkčních odkazů v selenu c#.

1
2

pomocí System. Net. Http;
pomocí System.Závit.Úkoly;

2. Definujte asynchronní metodu, která vrací úlohu

asynchronní testovací metoda je definována jako metoda GetAsync, která odešle požadavek GET zadanému URI jako asynchronní operaci.

1
2

veřejná asynchronní úloha LT_Broken_Links_Test()
{

3. Sbírejte odkazy na stránce

nejprve vytvoříme instanci HttpClient.

1
použití var client = new HttpClient ();

LambdaTest Blog) jsou shromažďovány lokalizací webových prvků pomocí vlastnosti TagName „a“.

1
var odkazy = řidič.FindElements (Podle.TagName („a“));

metoda find_elements v selenu se používá k vyhledání odkazů na stránce, protože vrací pole (nebo seznam), které lze iterovat, aby se ověřila funkčnost odkazů.

4. Iterovat přes adresy URL pro ověření

odkazy umístěné pomocí metody find_elements jsou ověřeny ve smyčce for.

1
2

foreach (var odkaz v odkazech)
{

filtrujeme odkazy, které obsahují / e-mailové adresy/telefonní čísla / adresy LinkedIn. Odkazy bez textu odkazu jsou také odfiltrovány.

1
2

pokud (!(odkaz.Text.Obsahuje („E-mail“) | | odkaz.Text.Obsahuje („https://www.linkedin.com“) | | odkaz.Text = = „“ / / odkaz.Rovná se (null)))
{

metoda GetAsync třídy HttpClient odešle požadavek GET na odpovídající URI jako asynchronní operaci. Argument k metodě GetAsync je hodnota atributu „href“ kotvy shromážděné metodou GetAttribute.

vyhodnocení asynchronní metody je operátorem wait pozastaveno až do dokončení asynchronní operace. Po dokončení asynchronní operace operátor wait vrátí HttpResponseMessage, který obsahuje data a stavový kód.

1
2
3

/* získejte URI * /
HttpResponseMessage response = wait client.GetAsync (odkaz.GetAttribute („href“));
systém.Konzola.WriteLine ($“URL: {link.GetAttribute („href“)} stav je :{odpověď.StatusCode}“);

5. Ověřte odkazy pomocí stavového kódu

, pokud je kód odpovědi HTTP (tj.StatusCode) pro HTTP požadavek odeslaný v kroku (4) je HttpStatusCode.200), to znamená, že požadavek byl úspěšně dokončen.

1
2
3
4
5
6
7
8
9

systém.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

zde je execution snapshot, který ukazuje, že test byl úspěšně proveden.

provedení testu selenium webdriver

došlo k výjimkám pro odkazy na „ikony sdílení“, tj. Facebook, Twitter atd. Kromě těchto odkazů vrátí zbývající odkazy na stránce blogu LambdaTest HttpStatusCode.OK (tj. 200).

Http stavový kód

testování nefunkčních odkazů pomocí selenu PHP

implementace

návod kódu

1. Číst zdroj stránky

funkce file_get_contents v PHP se používá pro čtení zdroje HTML stránky do proměnné řetězce (např.

1
2

$test_url = „https://www.lambdatest.com/blog/“;
$html = file_get_contents ($test_url);

2. Instanci třídy DOMDocument

Třída DOMDocument v PHP představuje celý dokument HTML a slouží jako kořen stromu dokumentů.

1
$htmlDom = nový DOMDocument;

3. Analyzujte HTML stránky

funkce DOMDocument:: loadHTML () se používá pro analýzu zdroje HTML, který je obsažen v $html. Při úspěšném spuštění funkce vrátí objekt DOMDocument.

1
@$HTML – >loadHTML ($html);

4. Extrahujte odkazy ze stránky

odkazy na stránce jsou extrahovány pomocí metody getElementsByTagName třídy DOMDocument. Prvky (nebo odkazy) jsou vyhledávány na základě značky “ a “ z analyzovaného zdroje HTML.

funkce getElementsByTagName vrací novou instanci Domnodelistu, která obsahuje prvky (nebo odkazy) místního názvu proměnné (tj. štítek)

1
$links = $ htmlDom – >getElementsByTagName (‚a‘);

5. Iterovat přes adresy URL pro ověření

DOMNodeList, který byl vytvořen v kroku (4), prochází pro kontrolu platnosti odkazů.

1
2
3

foreach ($links as $link)
{
$linkText = $link – >nodeValue;

podrobnosti o příslušném odkazu jsou získány pomocí atributu „href“. Metoda GetAttribute se používá pro totéž.

1
$linkHref = $link – >getAttribute (‚href‘);

přeskočit kontrolu odkazů, pokud:

a. odkaz je prázdný

1
2
3
4

if (strlen (trim ($linkHref)) == 0)
{
pokračovat;
}

b. Odkaz je hashtag nebo kotevní odkaz

1
2
3
4

if ($linkHref == ‚#‘)
{
pokračovat;
}

c. odkaz obsahuje mailto nebo addtoany (tj. možnosti sociálního sdílení).

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)
{
pokud (preg_match ($test_pattern, $test_url) = = false)
{
návrat false;
}
else
{
návrat true;
}
}
veřejná funkce test_Broken_Links()
{
$pattern_1 = ‚ / \ baddtoany\b/‘;
$pattern_2 = ‚ / \bmailto\b/‘;
…………………………………………………………..
…………………………………………………………..
…………………………………………………………..
if ((check_nonlinks($linkHref, $pattern_1)) / / (check_nonlinks ($linkHref, $pattern_2)))
{
tisk („\nAdd_To_Any nebo email“);
pokračovat;
}
…………………………………………………………..
…………………………………………………………..
…………………………………………………………..
}

funkce preg_match používá regulární výraz (regex) pro provádění vyhledávání pro mailto a addtoany necitlivé na velká a malá písmena. Regulární výrazy pro mailto & addtoany jsou’/ \bmailto\b /’&’/ \baddtoany\b/‘.

6. Ověřte HTTP kód pomocí cURL

curl používáme k získání informací o stavu odpovídajícího odkazu. Prvním krokem je inicializace relace cURL s „odkazem“, na kterém je třeba provést ověření. Metoda vrací instanci cURL, která bude použita v druhé části implementace.

1
$curl = curl_init ($linkHref);

metoda curl_setopt se používá pro nastavení voleb na dané rukojeti relace cURL (tj.

1
curl_setopt ($curl, CURLOPT_NOBODY, true) ;

metoda curl_exec je volána pro provedení dané relace cURL. Vrací se pravda při úspěšném provedení.

1
$result = curl_exec ($curl);

Toto je nejdůležitější část logiky, která kontroluje nefunkční odkazy na stránce. Funkce curl_getinfo, která přebírá rukojeť relace cURL (tj. $curl) a CURLINFO_RESPONSE_CODE (tj. CURLINFO_HTTP_CODE) se používají pro získání informací o posledním přenosu. Vrací stavový kód HTTP jako odpověď.

1
$statusCode = curl_getinfo ($curl, CURLINFO_HTTP_CODE);

po úspěšném dokončení požadavku je vrácen stavový kód HTTP 200 a proměnná, která drží počet platných odkazů (tj. U odkazů, které mají za následek stavový kód HTTP 400 (nebo více), se provede kontrola, zda „testovaný odkaz“ byla stránka LambdaTest, LinkedIn. Jak již bylo zmíněno, stavový kód stránky LinkedIn bude 999; proto se zvýší hodnota $valid_links.

pro všechny ostatní odkazy, které vrátily stavový kód HTTP 400 (nebo více), je proměnná, která drží počet nefunkčních odkazů (tj.

1
2
3
4
5
6
7
8
9
10

if (($linkedin_page_status) && ($statusCode == 999))
{
tisk („\nLink“. $ linkHref . „je stránka LinkedIn a stav je“.$statusCode);
$validlinks++;
}
else
{
tisk („\nLink“. $ linkHref . „je přerušený odkaz a stav je“.$statusCode);
$ brokenlinks++;
}

provedení

používáme rámec PHPUnit pro testování nefunkčních odkazů na stránce. Pro stažení rámce PHPUnit přidejte skladatele souborů.json v kořenové složce a spusťte composer require na terminálu.

Spusťte následující příkaz na terminálu a zkontrolujte nefunkční odkazy v SELENIU PHP.

1
vendor \ bin\PHPUnit testy\BrokenLinksTest.php

zde je snímek provedení, který zobrazuje celkem 116 platných odkazů a 0 nefunkčních odkazů na blogu LambdaTest. Addtoany) a e-mailovou adresu jsou ignorovány, celkový počet je 116 (169 v testu Selenium Python).

execution snapshot

závěr

 pevné

zdroj

nefunkční odkazy, nazývané také mrtvé odkazy nebo rot odkazy, mohou bránit uživatelské zkušenosti, pokud jsou přítomny na webových stránkách. Nefunkční odkazy mohou také ovlivnit hodnocení ve vyhledávačích. Testování nefunkčních odkazů by proto mělo být prováděno pravidelně pro činnosti související s vývojem a testováním webových stránek.

spíše než spoléhat se na nástroje třetích stran nebo ruční metody pro kontrolu nefunkčních odkazů na webových stránkách, testování nefunkčních odkazů lze provést pomocí Selenium WebDriver s Java, Python, C# nebo PHP. Stavový kód HTTP, vrácený při přístupu na jakoukoli webovou stránku, by měl být použit ke kontrole nefunkčních odkazů pomocí rámce Selenium.

Často kladené otázky

Jak najdu nefunkční odkazy v Selenium Python?

pro kontrolu nefunkčních odkazů budete muset shromáždit všechny odkazy na webové stránce na základě značky. Poté odešlete požadavek HTTP na odkazy a přečtěte si kód odpovědi HTTP. Zjistěte, zda je odkaz platný nebo nefunkční na základě kódu odpovědi HTTP.

Jak mohu zkontrolovat nefunkční odkazy?

Chcete-li průběžně sledovat vaše stránky pro nefunkční odkazy pomocí Google Search Console, postupujte takto:

  1. přihlaste se ke svému účtu Google Search Console.
  2. klikněte na web, který chcete sledovat.
  3. klepněte na tlačítko Procházet a potom klepněte na tlačítko Načíst jako Google.
  4. po procházení webu Google klikněte na Procházet a poté na Chyby procházení.
  5. v části chyby adresy URL můžete vidět všechny nefunkční odkazy, které Google objevil během procesu procházení.

Jak najdu rozbité obrázky na webu pomocí selenu?

navštivte stránku. Iterujte každý obrázek v archivu HTTP a zjistěte, zda má stavový kód 404. Uložte každý zlomený obrázek do sbírky. Zkontrolujte, zda je kolekce poškozených obrázků prázdná.

Jak získám všechny odkazy v selenu?

všechny odkazy na webové stránce můžete získat na základě přítomné značky <a>. Každá značka <a> představuje odkaz. Pomocí lokátorů selenu snadno najdete všechny takové značky.

proč jsou nefunkční odkazy špatné?

mohou poškodit uživatelský dojem – když uživatelé kliknou na odkazy a dosáhnou chyb 404, jsou frustrovaní a nikdy se nemusí vrátit. Znehodnocují vaše úsilí o SEO-nefunkční odkazy omezují tok vlastního odkazu na vašem webu a negativně ovlivňují hodnocení.

Himanshu Sheth

Himanshu Sheth je zkušený technolog a blogger s více než 15+ let různých pracovních zkušeností. V současné době pracuje jako „vedoucí vývojář Evangelista“ a „Senior Manager“ ve společnosti LambdaTest. Je velmi aktivní se startupovou komunitou v Bengaluru (a na jihu) a miluje interakci s vášnivými zakladateli na svém osobním blogu(který udržuje od posledních 15 + let).

napsal

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.