Apa itu Tautan Rusak?
Tautan rusak adalah tautan atau URL yang tidak dapat dijangkau. Mereka mungkin mati atau tidak berfungsi karena beberapa kesalahan server
URL akan selalu memiliki status dengan 2xx yang valid. Ada kode status HTTP berbeda yang memiliki tujuan berbeda. Untuk permintaan yang tidak valid, status HTTP adalah 4xx dan 5xx.
Kelas 4xx kode status terutama untuk kesalahan sisi klien, dan kelas 5xx kode status terutama untuk kesalahan respons server.
Kami kemungkinan besar tidak dapat mengonfirmasi apakah tautan itu berfungsi atau tidak sampai kami mengeklik dan mengonfirmasinya.
Mengapa Anda harus memeriksa tautan Rusak?
Anda harus selalu memastikan bahwa tidak ada link yang rusak di situs karena pengguna tidak boleh masuk ke halaman kesalahan.
Kesalahan terjadi jika aturan tidak diperbarui dengan benar, atau sumber daya yang diminta tidak ada di server.
Pemeriksaan link secara manual adalah tugas yang membosankan, karena setiap halaman web mungkin memiliki banyak link & proses manual harus diulang untuk semua halaman.
Skrip Otomasi menggunakan Selenium yang akan mengotomatiskan proses adalah solusi yang lebih tepat.
Cara memeriksa Tautan Rusak dan gambar
Untuk memeriksa tautan yang rusak, Anda perlu melakukan langkah-langkah berikut.
- Kumpulkan semua link di halaman web berdasarkan tag .
- Kirim permintaan HTTP untuk tautan tersebut dan baca kode tanggapan HTTP.
- Cari tahu apakah link tersebut valid atau rusak berdasarkan kode respon HTTP.
- Ulangi ini untuk semua tautan yang diambil.
Kode untuk Menemukan Tautan yang Rusak di halaman web
Di bawah ini adalah kode driver web yang menguji kasus penggunaan kami:
paket automationPractice;impor 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;impor org.openqa.selenium.chrome.ChromeDriver;kelas publik BrokenLinks {driver WebDriver statis pribadi = null;public static void main (String [] args) {// TODO Rintisan metode yang dibuat secara otomatisString homePage = "http://www.zlti.com";String url = "";HttpURLConnection huc = null;int respCode = 200;driver = new ChromeDriver ();driver.manage (). window (). maksimalkan ();driver.get (homePage);Daftarlinks = driver.findElements (By.tagName ("a"));Iterator it = links.iterator ();sementara (it.hasNext ()) {url = it.next (). getAttribute ("href");System.out.println (url);jika (url == null || url.isEmpty ()) {System.out.println ("URL tidak dikonfigurasi untuk tag jangkar atau kosong");terus;}if (! url.startsWith (homePage)) {System.out.println ("URL milik domain lain, melewatinya.");terus;}coba {huc = (HttpURLConnection) (URL baru (url) .openConnection ());huc.setRequestMethod ("HEAD");huc.connect ();respCode = huc.getResponseCode ();jika (respCode> = 400) {System.out.println (url + "adalah tautan yang rusak");}lain{System.out.println (url + "adalah tautan yang valid");}} menangkap (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace ();} tangkap (IOException e) {// TODO Auto-generated catch blocke.printStackTrace ();}}driver.quit ();}}
Menjelaskan Contoh Kode
Langkah 1: Impor Paket
Impor paket di bawah ini selain paket default:
import java.net.HttpURLConnection;
Dengan menggunakan metode dalam paket ini, kita dapat mengirim permintaan HTTP dan menangkap kode tanggapan HTTP dari tanggapan tersebut.
Langkah 2: Kumpulkan semua tautan di halaman web
Identifikasi semua tautan di halaman web dan simpan di Daftar.
Daftarlinks = driver.findElements (By.tagName ("a"));
Dapatkan Iterator untuk melintasi List.
Iteratorit = links.iterator ();
Langkah 3: Mengidentifikasi dan Memvalidasi URL
Di bagian ini, kami akan memeriksa apakah URL milik domain pihak ketiga atau apakah URL kosong / null.
Dapatkan href tag anchor dan simpan dalam variabel url.
url = it.next (). getAttribute ("href");
Periksa apakah URL nihil atau Kosong dan lewati langkah yang tersisa jika kondisinya terpenuhi.
jika (url == null || url.isEmpty ()) {System.out.println ("URL tidak dikonfigurasi untuk tag jangkar atau kosong");terus;}
Periksa apakah URL milik domain utama atau pihak ketiga. Lewati langkah yang tersisa jika itu milik domain pihak ketiga.
if (! url.startsWith (homePage)) {System.out.println ("URL milik domain lain, melewatinya.");terus;}
Langkah 4: Kirim permintaan http
Kelas HttpURLConnection memiliki metode untuk mengirim permintaan HTTP dan menangkap kode tanggapan HTTP. Jadi, output dari metode openConnection () (URLConnection) diketikkan ke HttpURLConnection.
huc = (HttpURLConnection) (URL baru (url) .openConnection ());
Kita dapat menyetel jenis Permintaan sebagai "HEAD" daripada "GET". Sehingga hanya header yang dikembalikan dan bukan badan dokumen.
huc.setRequestMethod ("HEAD");
Saat menjalankan metode connect (), koneksi aktual ke url dibuat dan permintaan dikirim.
huc.connect ();
Langkah 5: Memvalidasi Tautan
Dengan menggunakan metode getResponseCode () kita bisa mendapatkan kode respon untuk permintaan tersebut
respCode = huc.getResponseCode ();
Berdasarkan kode tanggapan kami akan mencoba memeriksa status tautan.
jika (respCode> = 400) {System.out.println (url + "adalah tautan yang rusak");}lain{System.out.println (url + "adalah tautan yang valid");}
Dengan demikian, kami dapat memperoleh semua tautan dari halaman web dan mencetak apakah tautan itu valid atau rusak.
Semoga tutorial ini membantu Anda dalam memeriksa tautan Rusak menggunakan selenium.
Cara mendapatkan SEMUA Tautan Halaman Web
Salah satu prosedur umum dalam Pengujian web adalah menguji apakah semua tautan yang ada dalam laman berfungsi. Ini dapat dilakukan dengan mudah menggunakan kombinasi Java untuk setiap loop , metode findElements () & By.tagName ("a") .
Metode findElements (), mengembalikan daftar Elemen Web dengan tag a. Menggunakan for-each loop, setiap elemen diakses.
Kode WebDriver di bawah ini memeriksa setiap tautan dari beranda Mercury Tours untuk menentukan tautan yang berfungsi dan yang masih dalam pembuatan.
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.chrome.ChromeDriver;import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium. *;kelas umum P1 {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = new ChromeDriver ();String underConsTitle = "Sedang Dibuat: Wisata Mercury";driver.manage (). timeout (). implicitlyWait (5, TimeUnit.SECONDS);driver.get (baseUrl);DaftarlinkElements = driver.findElements (By.tagName ("a"));String [] linkTexts = String baru [linkElements.size ()];int i = 0;// ekstrak teks tautan dari setiap elemen tautanuntuk (WebElement e: linkElements) {linkTexts [i] = e.getText ();i ++;}// uji setiap tautanuntuk (String t: linkTexts) {driver.findElement (By.linkText (t)). click ();if (driver.getTitle (). sama dengan (underConsTitle)) {System.out.println ("\" "+ t +" \ ""+ "sedang dibangun.");} lain {System.out.println ("\" "+ t +" \ ""+ "bekerja.");}driver.navigate (). back ();}driver.quit ();}}
Outputnya harus serupa dengan yang ditunjukkan di bawah ini.
Penyelesaian masalah
Dalam kasus terpisah, tautan pertama yang diakses oleh kode tersebut bisa jadi Tautan "Beranda". Dalam kasus seperti itu, tindakan driver.navigate.back () akan menampilkan halaman kosong karena tindakan pertama adalah membuka browser. Pengemudi tidak akan dapat menemukan semua tautan lain di browser kosong. Jadi IDE akan mengeluarkan pengecualian dan kode lainnya tidak akan dijalankan. Ini dapat dengan mudah ditangani menggunakan loop If.