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.
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.
- perintah driver.navigate().refresh()
- Dapatkan metode
- Kirim perintah Kunci
- Navigasi metode
- 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:
- Buka browser Chrome dengan halaman web tersebut. https://demo.guru99.com/selenium/guru99home/
- Setelah halaman berhasil dimuat, segarkan halaman web menggunakan metode driver.navigate().refresh().
- 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.
Setelah operasi penyegaran halaman, video di halaman tersebut telah berubah, yang menegaskan bahwa pemuatan ulang benar-benar terjadi.
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:
- lokasi.muat ulang() Melakukan pemuatan ulang normal dan dapat menyajikan halaman dari cache.
- 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:
- Cari setelahnya, jangan pernah sebelumnya. Simpan locator By alih-alih WebElement, dan panggil findElement lagi setelah proses pemuatan ulang selesai.
- Tunggu sinyal yang sebenarnya. Menunggu secara eksplisit visibilitas elemen yang hanya ada setelah pemuatan ulang jauh lebih andal daripada penundaan tetap.
- 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.


