Segarkan Halaman menggunakan Selenium Driver web

⚡ Ringkasan Cerdas

Menyegarkan halaman di Selenium WebDriver memuat ulang saat ini URL sehingga setiap elemen dirender sebelum pernyataan dijalankan, dan kerangka kerja ini menawarkan lima perintah berbeda yang mencapai pemuatan ulang yang sama dengan cara yang berbeda.

  • 🔘 Pilihan default: driver.navigate().refresh() adalah fungsi reload bawaan yang tidak menerima argumen dan tidak mengembalikan nilai apa pun.
  • ☑️ Varian rekursif: Meneruskan getCurrentUrl() ke get() atau navigate().to() akan memuat ulang alamat yang sama.
  • ✅ Rute keyboard: sendKeys menerima Keys.F5 atau nilai Unicode \uE035, tetapi harus menargetkan elemen nyata.
  • 🧪 Rute skrip: JavascriptEksekutor yang menjalankan location.reload() berfungsi ketika perintah WebDriver diblokir.
  • ️ Setelah memuat ulang: Setiap referensi elemen yang telah dicatat sebelumnya menjadi usang dan harus dicari kembali.
  • 📊 Pengaturan modern: Selenium Fitur Manager hadir di versi 4.6, sehingga jalur driver tidak perlu lagi diatur secara manual.

Segarkan halaman menggunakan Selenium Perintah WebDriver

Selama otomatisasi pengujian aplikasi berbasis web, muncul kebutuhan untuk me-refresh halaman beberapa kali agar semua elemen web dimuat sepenuhnya. Pada pemuatan halaman awal, beberapa elemen web mungkin dimuat, sementara diperlukan refresh halaman kedua agar semuanya muncul. Hal ini dapat dilakukan menggunakan perintah refresh yang disediakan oleh Selenium Pengemudi Web.

Cara Menyegarkan Halaman di Selenium

Operasi penyegaran browser dapat dilakukan dengan menggunakan cara berikut di Selenium. Kami akan membahas cara-cara yang disebutkan di bawah ini secara rinci di seluruh artikel.

  1. perintah driver.navigate().refresh()
  2. Dapatkan metode
  3. Kirim perintah Kunci
  4. Navigasi metode
  5. perintah driver.navigate().to()

1) Perintah driver.navigate().refresh()

Ini adalah metode bawaan untuk melakukan operasi penyegaran halaman yang disediakan oleh Selenium WebDriver. Perintah ini adalah perintah yang paling umum digunakan dalam otomatisasi pengujian untuk melakukan operasi penyegaran halaman. Perintah refresh dapat digunakan dengan cara sederhana seperti yang disebutkan di bawah ini.

driver.get("https://demo.guru99.com/selenium/guru99home/");
driver.navigate().refresh();

Navigasi adalah antarmuka yang digunakan untuk melakukan berbagai operasi browser seperti menavigasi ke halaman sebelumnya, menavigasi ke halaman berikutnya, penyegaran halaman, dan menutup browser. Metode antarmuka Navigasi dapat diakses menggunakan perintah driver.navigate(). Metode refresh dari antarmuka Navigasi tidak menerima argumen apa pun dan tidak mengembalikan nilai apa pun.

Contoh:

Skenario Uji:

  1. Buka browser Chrome dengan halaman web tersebut. https://demo.guru99.com/selenium/guru99home/
  2. Setelah halaman berhasil dimuat, segarkan halaman web menggunakan metode driver.navigate().refresh().
  3. Tutup browser menggunakan metode driver.close().

Code

package Guru99Demo;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class RefreshDemo {
public static void main(String args[]) throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://demo.guru99.com/selenium/guru99home/");
driver.manage().window().maximize();
driver.navigate().refresh();
driver.close();
}
}

⚠️ Catatan versi: Selenium Manajer dikirim dengan Selenium 4.6 dan mengunduh driver browser yang sesuai secara otomatis, sehingga baris System.setProperty di atas tidak lagi diperlukan pada versi terbaru — new ChromeDriver() sudah cukup. Baris aslinya dipertahankan karena masih tepat untuk Selenium 3 pengaturan gaya yang digunakan dalam contoh tersebut.

Code Keluaran:

Saat halaman pertama kali dimuat, halaman beranda demo akan ditampilkan seperti di bawah ini.

GuruHalaman beranda demo 99 pada pemuatan awal sebelum perintah penyegaran dijalankan

Setelah operasi penyegaran halaman, video di halaman tersebut telah berubah, yang menegaskan bahwa pemuatan ulang benar-benar terjadi.

GuruHalaman utama demo 99 setelah driver.navigate().refresh() menampilkan video yang berbeda

Berbagai Cara Lain untuk Menyegarkan Halaman

Metode penyegaran bukanlah satu-satunya cara untuk memuat ulang halaman. Empat teknik di bawah ini menghasilkan hasil yang sama dan perlu diketahui, karena aplikasi yang terkunci atau browser yang bandel terkadang memblokir salah satunya.

2) Dapatkan Metode

Metode `get` dapat digunakan secara rekursif untuk menyegarkan halaman. Untuk mencapai hal ini, kita perlu memberikan metode lain sebagai argumen ke metode `get`.

Contoh:

driver.get("https://www.guru99.com");
driver.get(driver.getCurrentUrl());

3) Metode Navigasi

Metode ini menggunakan konsep rekursi yang sama seperti yang disebutkan di atas. Metode getCurrentUrl() diteruskan sebagai argumen ke metode driver.navigate().to().

Contoh:

driver.get("https://www.guru99.com");
driver.navigate().to(driver.getCurrentUrl());

4) Metode Mengirim Tombol Menggunakan Tombol F5

Ini adalah metode kedua yang paling umum digunakan untuk menyegarkan halaman SeleniumMetode sendKeys menerima tombol refresh (F5) sebagai argumen. Karena sendKeys hanya berfungsi pada elemen web dan bukan pada browser, kita harus terlebih dahulu mengidentifikasi elemen web yang valid pada halaman web dan kemudian menggunakan metode sendKeys. Hal ini dapat dilakukan seperti yang ditunjukkan di bawah ini.

Contoh:

driver.get("https://www.guru99.com");
driver.findElement(By.id("username")).sendKeys(Keys.F5);

Karena penekanan tombol dikirim ke suatu elemen dan bukan ke antarmuka browser, rute ini bergantung pada elemen yang memegang fokus. Jika locator Jika cocok dengan kolom yang tidak dapat menerima fokus, kunci akan hilang dan halaman tidak pernah dimuat ulang.

5) Metode Pengiriman Tombol Menggunakan ASCII Code

Metode ini menggunakan konsep yang sama seperti di atas, tetapi alih-alih mengirimkan tombol F5 sebagai argumen, kita mengirimkan kode titik dari tombol refresh sebagai argumen. Hal ini dapat dilakukan seperti yang ditunjukkan di bawah ini.

driver.get("https://www.guru99.com");
driver.findElement(By.id("username")).sendKeys("\uE035");

Nilai \uE035 adalah kode titik Unicode WebDriver yang dipetakan protokol ke F5, jadi cuplikan ini dan yang sebelumnya setara.

Cara Menyegarkan Halaman Menggunakan JavaPelaksana Skrip

Setiap browser menyediakan fungsi muat ulang untuk skrip halaman, dan Selenium dapat memanggilnya melalui JavascriptAntarmuka eksekutor. Ini adalah opsi cadangan umum ketika perintah penyegaran WebDriver dicegat oleh aplikasi atau ekstensi peramban.

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("location.reload();");

Ada dua variasi yang perlu diingat:

  1. lokasi.muat ulang() Melakukan pemuatan ulang normal dan dapat menyajikan halaman dari cache.
  2. sejarah.pergi(0) adalah versi lama yang masih digunakan oleh beberapa paket perangkat lunak lawas.

Rute eksekutor berjalan di dalam halaman, jadi rute tersebut tidak menunggu dokumen baru dengan sendirinya. Ikuti dengan penantian eksplisit persis seperti yang Anda lakukan setelah driver.navigate().refresh(), dan ingat bahwa pemuatan ulang yang digerakkan oleh skrip tidak akan menghapus dialog tingkat browser. Jika aplikasi yang diuji memuat kontennya secara asinkron, kehati-hatian yang sama berlaku seperti saat menangani panggilan AJAX di Selenium webdriver.

Cara Menghindari StaleElementReferenceException Setelah Refresh

Refresh akan menghancurkan DOM saat ini dan membangun yang baru. Setiap WebElement yang ditangkap sebelum pemuatan ulang sekarang menunjuk ke node yang sudah tidak ada lagi, sehingga panggilan berikutnya terhadapnya akan melempar StaleElementReferenceException. Ini adalah kegagalan paling umum yang terjadi setelah refresh halaman.

Tiga kebiasaan ini dapat menghilangkan hampir semua kegagalan tersebut:

  1. Cari setelahnya, jangan pernah sebelumnya. Simpan locator By alih-alih WebElement, dan panggil findElement lagi setelah proses pemuatan ulang selesai.
  2. Tunggu sinyal yang sebenarnya. Menunggu secara eksplisit visibilitas elemen yang hanya ada setelah pemuatan ulang jauh lebih andal daripada penundaan tetap.
  3. Segarkan halaman, lalu baca kembali. Jangan pernah membawa nilai teks atau atribut yang diambil sebelum pemuatan ulang ke dalam pernyataan yang dibuat setelahnya.

Pola di bawah ini menerapkan ketiganya:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
driver.navigate().refresh();
WebElement search = wait.until(
        ExpectedConditions.visibilityOfElementLocated(By.id("username")));
search.sendKeys("guru99");

WebDriverWait membutuhkan Durasi dalam Selenium 4, yang merupakan perubahan dari konstruktor detik bilangan bulat yang digunakan di Selenium 3. Teknik yang lebih luas untuk mengatasi kegagalan ini dibahas dalam panduan kami tentang penanganan pengecualian dalam Selenium.

Perbandingan dari Selenium Metode Penyegaran Halaman

Keenam perintah tersebut memuat ulang halaman, tetapi perbedaannya terletak pada apa yang menjadi syaratnya dan bagaimana kegagalannya terjadi.

metode Tergantung pada Memuat ulang melalui Ketika itu adalah pilihan yang tepat
pengemudi.navigasi().perbarui() Tidak ada yang ekstra Perintah memuat ulang browser Hampir selalu — standar default
driver.get(driver.getCurrentUrl()) Arus yang mudah dibaca URL Navigasi baru Ketika Anda juga ingin menghapus entri riwayat.
driver.navigate().to(driver.getCurrentUrl()) Arus yang mudah dibaca URL Navigasi baru Sama seperti di atas, ditulis melalui antarmuka Navigasi.
kirim tombol (Tombol F5) Elemen yang dapat difokuskan Sebuah ketukan tombol Saat Anda sengaja menguji jalur keyboard
sendKeys(“\uE035”) Elemen yang dapat difokuskan Sebuah ketukan tombol Sama dengan F5, ditulis sebagai kode titik.
JavascriptExecutor location.reload() Pemrograman skrip diaktifkan Naskah halaman Saat perintah WebDriver diblokir

Mulailah dengan perintah penyegaran, dan lanjutkan ke baris berikutnya hanya jika gagal karena alasan yang Anda pahami. Urutan preferensi yang sama berlaku ketika Anda memaksimalkan atau mengubah ukuran jendela browser: lebih memilih panggilan WebDriver asli dan memperlakukan rute skrip sebagai alternatif.

Pertanyaan Umum Demo Slot

Bisa jadi. Jika halaman saat ini dihasilkan oleh permintaan POST, browser mungkin meminta untuk mengirim ulang data dan proses pemuatan ulang akan terhenti di balik dialog tersebut. Menavigasi ke URL Dengan menggunakan get() lagi, prompt akan dihindari sepenuhnya.

Nama pengikatnya berbeda tetapi perintahnya sama: driver.refresh() di Python, driver.Navigate().Refresh() di C# dan driver.navigate().refresh() di JavaKetiganya mengeluarkan instruksi WebDriver yang identik.

Tidak. Memuat ulang halaman akan mempertahankan cookie, penyimpanan sesi, dan penyimpanan lokal untuk asal yang sama, itulah mengapa penyegaran bukanlah cara yang baik untuk mengatur ulang status. Hapus cookie secara eksplisit atau mulai sesi browser baru sebagai gantinya.

Mesin yang dapat memperbaiki diri sendiri akan menyelesaikan kembali locator dari beberapa atribut ketika DOM yang dimuat ulang tidak lagi cocok, dan model analisis kegagalan akan mengelompokkan masalah waktu pemuatan ulang sehingga tim dapat memperbaiki satu penundaan daripada lima puluh pengujian.

Ya, dan panggilan penyegaran satu baris adalah saran yang selalu tepat. Penantian yang harus mengikutinya adalah di mana saran-saran tersebut salah, jadi tinjau setiap batas waktu yang dihasilkan dengan cara aplikasi benar-benar dimuat.

Tidak ada perintah khusus. Tim menggunakan perintah serupa dengan mengirimkan Ctrl dan F5 secara bersamaan melalui kelas Actions, atau dengan menonaktifkan cache melalui opsi browser, yang merupakan cara yang lebih dapat diandalkan.

Tidak dengan perintah refresh, yang selalu memuat ulang dokumen teratas. Beralihlah ke frame tersebut dan muat ulang dengan skrip, atau atur ulang atribut sumbernya, lalu beralih kembali ke konten default.

Jangan menebak dengan waktu tidur tetap. Gunakan penundaan eksplisit selama sepuluh hingga tiga puluh detik pada kondisi yang hanya benar setelah pemuatan ulang, sehingga pengujian berlanjut saat halaman siap.

Ringkaslah postingan ini dengan: