Cara Menemukan Tautan Rusak di Selenium
โก Ringkasan Cerdas
Menemukan tautan rusak di Selenium WebDriver melibatkan pengumpulan setiap tag anchor, mengirimkan permintaan HTTP HEAD ke setiap tag tersebut. URL, dan membaca kode respons. Tautan yang mengembalikan kode 400 atau lebih tinggi ditandai sebagai tautan rusak, sedangkan tautan yang valid mengembalikan kode 2xx.

Apa itu Tautan Rusak?
Tautan rusak adalah tautan atau URLSitus-situs tersebut tidak dapat dijangkau. Situs-situs tersebut mungkin sedang mengalami gangguan atau tidak berfungsi karena kesalahan server.
A URL Statusnya akan selalu 2xx, yang berarti valid. Terdapat berbagai kode status HTTP yang memiliki tujuan berbeda. Untuk permintaan yang tidak valid, status HTTP-nya adalah 4xx dan 5xx.
Kode status kelas 4xx terutama untuk kesalahan di sisi klien, sedangkan kode status kelas 5xx terutama untuk kesalahan respons server.
Kemungkinan besar kami tidak dapat mengonfirmasi apakah tautan tersebut berfungsi atau tidak hingga kami mengeklik dan mengonfirmasinya.
Mengapa Anda harus memeriksa Tautan rusak?
Anda harus selalu memastikan bahwa tidak ada tautan yang rusak di situs web, karena pengguna tidak seharusnya diarahkan ke halaman kesalahan.
Kesalahan terjadi jika aturan tidak diperbarui dengan benar, atau sumber daya yang diminta tidak ada di server.
Pemeriksaan tautan secara manual adalah tugas yang membosankan, karena setiap halaman web mungkin memiliki sejumlah besar tautan dan proses manual harus diulang untuk semua halaman.
Skrip otomatisasi yang menggunakan Selenium yang akan mengotomatiskan proses adalah solusi yang lebih tepat.
Cara cek Link dan Gambar Rusak di Selenium
Untuk memeriksa tautan yang rusak, Anda perlu melakukan langkah-langkah berikut.
- Kumpulkan semua tautan di halaman web berdasarkan tag.
- Kirim permintaan HTTP untuk tautan tersebut dan baca kode respons HTTP.
- Cari tahu apakah tautan tersebut valid atau rusak berdasarkan kode respons HTTP.
- Ulangi ini untuk semua tautan yang diambil.
Code Cara menemukan tautan yang rusak di halaman web.
Di bawah ini adalah kode driver web yang menguji kasus penggunaan kami:
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 stub String 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 block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } driver.quit(); } }
Menjelaskan kode Broken Link
Langkah 1: Impor Paket
Impor paket berikut ini sebagai tambahan dari paket bawaan:
import java.net.HttpURLConnection;
Dengan menggunakan metode dalam paket ini, kita dapat mengirim permintaan HTTP dan menangkap kode respons HTTP dari respons tersebut.
Langkah 2: Kumpulkan semua tautan di halaman web
Identifikasi semua tautan dalam sebuah halaman web dan simpan dalam sebuah Daftar.
List<WebElement> links = driver.findElements(By.tagName("a"));
Dapatkan sebuah Iterator untuk menelusuri Daftar tersebut.
Iterator<WebElement> it = links.iterator();
Langkah 3: Mengidentifikasi dan Memvalidasi URL
Pada bagian ini, kita akan memeriksa apakah sebuah URL milik domain pihak ketiga atau apakah URL kosong/null.
Dapatkan atribut href dari tag anchor dan simpan di variabel url.
url = it.next().getAttribute("href");
Periksa apakah URL Jika kondisi terpenuhi, maka langkah selanjutnya akan dilewati.
if(url == null || url.isEmpty()){ System.out.println("URL is either not configured for anchor tag or it is empty"); continue; }
Periksa apakah file URL milik domain utama atau pihak ketiga. Lewati langkah selanjutnya jika milik domain pihak ketiga.
if(!url.startsWith(homePage)){ System.out.println("URL belongs to another domain, skipping it."); continue; }
Langkah 4: Kirim permintaan HTTP
HttpURLKelas Connection memiliki metode untuk mengirim permintaan HTTP dan menangkap kode respons HTTP. Jadi, output dari metode openConnection() (URLKoneksi) diubah tipenya menjadi HttpURLKoneksi.
huc = (HttpURLConnection)(new URL(url).openConnection());
Kita dapat mengatur tipe permintaan menjadi โHEADโ alih-alih โGETโ, sehingga hanya header yang dikembalikan dan bukan isi dokumen.
huc.setRequestMethod("HEAD");
Saat metode connect() dipanggil, koneksi sebenarnya ke URL akan terjalin dan permintaan akan dikirim.
huc.connect();
Langkah 5: Memvalidasi Tautan
Menggunakan getResponseCodeDengan menggunakan metode (), kita bisa mendapatkan kode respons untuk permintaan tersebut.
respCode = huc.getResponseCode();
Berdasarkan kode respons, kami akan mencoba memeriksa status tautan.
if(respCode >= 400){ System.out.println(url+" is a broken link"); } else{ System.out.println(url+" is a valid link"); }
Dengan demikian, kita dapat memperoleh semua tautan dari sebuah halaman web dan mencetak apakah tautan tersebut valid atau rusak.
Cara mendapatkan SEMUA Tautan Halaman Web
Salah satu prosedur umum di web pengujian adalah untuk menguji apakah semua tautan yang ada di halaman berfungsi. Hal ini dapat dengan mudah dilakukan dengan menggunakan kombinasi dari Java untuk setiap loop, temukanElemen() & Oleh.tagName(โaโ) Metode.
Metode findElements() mengembalikan daftar Elemen Web dengan tag a. Dengan menggunakan perulangan for-each, setiap elemen diakses.
Kode WebDriver di bawah ini memeriksa setiap tautan dari Mercury Tur beranda untuk menentukan mana yang berfungsi dan mana yang masih dalam pembangunan.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.*; public class P1 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String underConsTitle = "Under Construction: Mercury Tours"; driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.get(baseUrl); List<WebElement> linkElements = driver.findElements(By.tagName("a")); String[] linkTexts = new String[linkElements.size()]; int i = 0; //extract the link texts of each link element for (WebElement e : linkElements) { linkTexts[i] = e.getText(); i++; } //test each link for (String t : linkTexts) { driver.findElement(By.linkText(t)).click(); if (driver.getTitle().equals(underConsTitle)) { System.out.println("\"" + t + "\"" + " is under construction."); } else { System.out.println("\"" + t + "\"" + " is working."); } driver.navigate().back(); } driver.quit(); } }
Outputnya harus serupa dengan yang ditunjukkan di bawah ini.
- Mengakses tautan gambar dilakukan dengan menggunakan metode By.cssSelector() dan By.xpath().
Penyelesaian masalah
Dalam kasus terisolasi, tautan pertama yang diakses oleh kode bisa jadi adalah tautan "Beranda". Dalam kasus seperti itu, aksi driver.navigate.back() akan menampilkan halaman kosong, karena aksi pertama adalah membuka browser. Driver tidak akan dapat menemukan semua tautan lain di browser kosong. Jadi IDE akan melempar pengecualian dan sisa kode tidak akan dieksekusi. Ini dapat dengan mudah ditangani menggunakan perulangan If.


.png)