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.

  • ๐Ÿ”— Definisi: Tautan yang rusak adalah sebuah URL yang tidak dapat dijangkau, biasanya mengembalikan kesalahan 4xx atau 5xx.
  • ๐Ÿงญ Why It Matters: Tautan rusak merusak pengalaman pengguna dan SEO, sehingga pemeriksaan otomatis menggantikan verifikasi manual yang lambat.
  • ๐Ÿ“ฅ Kumpulkan Tautan: Gunakan findElements dengan By.tagName(โ€œaโ€) untuk mengumpulkan semua elemen tautan di halaman ke dalam sebuah daftar.
  • ๐Ÿ“ก Kirim Permintaan HEAD: Buka HttpURLLakukan koneksi, atur metode ke HEAD, dan baca kode responsnya. URL.
  • โœ… Validasi Status: Anggap kode respons 400 atau lebih tinggi sebagai tautan yang rusak dan kode 2xx sebagai tautan yang berfungsi.

Cara Menemukan Tautan Rusak di Selenium

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.

  1. Kumpulkan semua tautan di halaman web berdasarkan tag.
  2. Kirim permintaan HTTP untuk tautan tersebut dan baca kode respons HTTP.
  3. Cari tahu apakah tautan tersebut valid atau rusak berdasarkan kode respons HTTP.
  4. 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.

Dapatkan SEMUA Tautan Halaman Web

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().

Dapatkan SEMUA Tautan Halaman Web

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.

Pertanyaan Umum Demo Slot

Selenium mengumpulkan semua tag anchor, mengirimkan permintaan HTTP HEAD ke masing-masing tag. URL, dan menandai tautan apa pun yang mengembalikan kode kesalahan 400 atau lebih tinggi sebagai tautan yang rusak.

Kode 4xx menunjukkan masalah di sisi klien, seperti halaman yang hilang, sedangkan kode 5xx menunjukkan kegagalan di sisi server saat memproses permintaan.

Ya. Sumber gambar dikumpulkan dengan By.cssSelector() atau By.xpath(), dan kemudian setiap src URL divalidasi melalui kode respons HTTP-nya.

Ya. Crawler berbasis AI memindai halaman, mengikuti tautan, dan menandai tautan yang rusak atau mengalihkan halaman. URLtanpa skrip manual.

AI memantau kesehatan tautan dari waktu ke waktu, memprediksi kegagalan, dan menyarankan penggantian, sehingga mengurangi audit tautan manual yang berulang.

Ringkaslah postingan ini dengan: