mnohokrát čelíme nefunkčním hypertextovým odkazům na webových stránkách. Dnes se naučíme, jak najít nefunkční odkazy pomocí selenu. Než se pustíme do těchto témat, Naučme se základní otázky.
co jsou nefunkční odkazy?
nefunkční odkaz (aka mrtvý odkaz nebo odkaz rotuje) je odkaz na webové stránce, který nefunguje (tj., to není přesměrování na stránku je určen k) z jednoho nebo více z následujících důvodů.
- Cílová webová stránka již není k dispozici (offline nebo trvale přesunuta).
- Cílová webová stránka byla přesunuta bez přidání přesměrování.
- struktura URL (permalinks) webové stránky se změní.
- neplatná adresa URL (chybně napsaná, chybně napsaná atd.) je uveden na zdrojové webové stránce.
- z důvodu omezení brány firewall nebo geolokace.
adresa URL, která má stavový kód 2XX HTTP, je platná a adresy URL mají stavové kódy 4XX a 5xx HTTP jsou neplatné. Pokud čelíte stavovému kódu 4xx, je to kvůli chybě na straně klienta a stavový kód je 5xx, což znamená, že je to kvůli chybě odpovědi serveru.
proč zkontrolovat nefunkční odkazy?
webservery vrátí chybovou zprávu, když se uživatel pokusí získat přístup k nefunkčnímu odkazu. Uživatelé budou přesměrováni na chybovou stránku, když kliknou na nefunkční odkaz. To vede ke špatnému uživatelskému zážitku. Musíme s nimi pracovat nepřetržitě a odstranit všechny existující nefunkční odkazy na našem webu. Tento proces můžeme provést ručně. Většina webových stránek má stovky nebo tisíce odkazů a testování všech z nich ručně není možné. Vyžaduje to obrovský čas, zdroje, a úsilí. Namísto ruční kontroly můžeme využít Selenium WebDriver k testování nefunkčních odkazů.
nenechte si ujít: manuální testování vs testování automatizace-rozdíly každý by měl vědět
jak ověřit nefunkční odkazy a obrázky
Chcete-li ověřit nefunkční odkazy, postupujte podle níže uvedených kroků.
- všechny odkazy jsou označeny buď odkazem <a> nebo obrázkem <img> na webové stránce. Sbírejte odkazy na základě značek <a>, < img>
- odeslat požadavek HTTP a přečíst kód odpovědi HTTP každého odkazu.
tímto způsobem můžete zjistit, zda je odkaz platný nebo neplatný na základě kódů odpovědí.
najít nefunkční odkazy pomocí Selenium WebDriver
jedním z klíčových testovacích případů je najít nefunkční odkazy na webové stránce. Vzhledem k existenci nefunkčních odkazů, vaše webové stránky pověst dostane poškozen a bude mít negativní dopad na vaše podnikání. Před vydáním je nutné najít a opravit všechny nefunkční odkazy. Pokud odkaz nefunguje, čelíme zprávě jako stránka 404 nebyla nalezena.
podívejme se na některé stavové kódy HTTP.
níže kód načte všechny odkazy na dané webové stránky (tj. SoftwareTestingMaterial.com) pomocí příkazů WebDriver a přečte stav každého odkazu href pomocí třídy HttpURLConnection.
Klikněte zde pro více informací o HttpURLConnection
vzhledem k jasnému vysvětlení v sekci komentáře v rámci samotného programu. Projděte si to, abyste pochopili tok.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
balíček softwareTestingMaterial;
import java. net. HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BrokenLinks {
public static void main(String args) throws InterruptedException {
//Instantiating FirefoxDriver
System.setProperty(„webdriver.gecko.driver“, „D:\\Selen životní prostředí \ \ ovladače\\geckodriver.exe“);
WebDriver driver = nový FirefoxDriver();
//maximalizujte ovladač prohlížeče
.spravovat().okno().maximalizovat();
//implicitní čekání na 10 sekund
ovladač.spravovat().limita().implicitly wait (10, TimeUnit.Sekundy);
//spustit softwaretestingmaterial.com
řidič.získat(„https://www.softwaretestingmaterial.com“);
//počkejte 5 sekund
vlákno .spánek (5000);
/ / použitá tagName metoda pro sběr seznamu položek s tagName “ a “
/ / findElements-najít všechny prvky s v aktuální stránce. Vrátí seznam všech webelementů nebo prázdný seznam, pokud se nic neshoduje
seznam<WebElement> links = driver.findElements (podle.tagName („a“));
//Chcete-li vytisknout celkový počet odkazů
systém.mimo.println („celkem odkazy jsou“ +odkazy.velikost());
//používá se pro smyčku
pro (int i=0; i<odkazy.velikost (); i++) {
WebElement element = odkazy.získat (i);
/ / použitím atributu „href“ bychom mohli získat adresu url požadovaného odkazu
String url=element.getAttribute („href“);
//volání metody verifyLink () zde. Předání parametru jako url, které jsme shromáždili ve výše uvedeném odkazu
/ / podívejte se na podrobnou funkčnost metody verifyLink (url) níže
verifyLink (url);
}
}
// níže uvedená funkce verifyLink (String urlLink) ověří všechny nefunkční odkazy a vrátí stav serveru.
public static void verifyLink (String urlLink) {
//někdy můžeme čelit výjimce „java. net. MalformedURLException“. ponechte kód v bloku try catch a pokračujte v analýze rozbitého odkazu
zkuste {
/ / použijte třídu URL-vytvořte objekt třídy URL a předejte urlLink jako parametr
URL link = new URL (urlLink);
// odkaz)
HttpURLConnection httpConn =(HttpURLConnection) link.openConnection();
//Nastavte časový limit na 2 sekundy
httpConn.setConnectTimeout(2000);
//připojení pomocí metody připojení
httpConn.připojit();
//použijte getResponseCode() získat kód odpovědi.
if(httpConn.getResponseCode()== 200) {
systém.mimo.println(urlLink+ “ – “ +httpConn.getResponseMessage());
}
pokud (httpConn.getResponseCode()== 404) {
systém.mimo.println(urlLink+ “ – “ +httpConn.getResponseMessage());
}
}
//metoda getResponseCode vrací = IOException – pokud došlo k chybě při připojení k serveru.
úlovek (výjimka e) {
//e. printStackTrace();
}
}
}
|
pokud byl tento příspěvek na téma „Hledání nefunkčních odkazů pomocí Selenium WebDriver“ schopen pomoci, nevadí mu to sdílet s ostatními.
pokud nejste pravidelným čtenářem SoftwareTestingMaterial.com pak vřele doporučuji, abyste se zaregistrovali k bezplatnému e-mailovému zpravodaji pomocí níže uvedeného odkazu.