Selenium Driver web Java Contoh Program
โก Ringkasan Cerdas
Selenium webdriver Java Contoh Program ini memandu Anda melalui skrip otomatisasi ujung-ke-ujung pertama Anda. LessMateri ini mencakup pengaturan lingkungan, pencarian elemen, pengiriman input, navigasi, validasi, penantian, penanganan pengecualian, dan praktik terbaik untuk pengujian WebDriver yang andal.

Selenium Java Example
Menggunakan Java class โmyclassโ yang kita buat pada tutorial sebelumnya, mari kita coba membuat skrip WebDriver yang akan:
Langkah 1: mengambil Mercury Beranda tur
Langkah 2: verifikasi judulnya
Langkah 3: cetak hasil perbandingannya
Langkah 4: tutup sebelum mengakhiri seluruh program.
Selenium Contoh WebDriver Code
Di bawah ini adalah kode WebDriver sebenarnya untuk logika yang disajikan oleh skenario di atas
package newproject; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; //comment the above line and uncomment below line to use Chrome //import org.openqa.selenium.chrome.ChromeDriver; public class PG1 { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //comment the above 2 lines and uncomment below 2 lines to use Chrome //System.setProperty("webdriver.chrome.">driver","G:\\chromedriver.exe"); //WebDriver driver = new ChromeDriver(); String baseUrl = "https://demo.guru99.com/test/newtours/"; String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = ""; // launch Fire fox and direct it to the Base URL driver.get(baseUrl); // get the actual value of the title actualTitle = driver.getTitle(); /* * compare the actual title of the page with the expected one and print * the result as "Passed" or "Failed" */ if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); } //close Fire fox driver.close(); } }
Catatan: Mulai Firefox 35, Anda perlu menggunakan driver tokek yang dibuat oleh Mozilla untuk menggunakan Driver Web. Selenium 3.0, gecko dan firefox memiliki masalah kompatibilitas dan pengaturannya yang benar bisa menjadi tugas yang berat. Jika kode tidak berfungsi, turunkan ke Firefox versi 47 atau lebih rendah. Alternatifnya, Anda dapat menjalankan skrip Anda di Chrome. Selenium berfungsi langsung di Chrome. Anda hanya perlu mengubah 3 baris kode untuk membuat skrip Anda berfungsi dengan Chrome atau Firefox
Menjelaskan kode
Mengimpor Paket
Untuk memulai, Anda perlu mengimpor dua paket berikut:
- org.openqa.selenium.*โ berisi kelas WebDriver yang diperlukan untuk membuat instance browser baru yang dimuat dengan driver tertentu
- org.openqa.selenium.firefox.Firefoxsopir โ berisi FirefoxKelas driver diperlukan untuk membuat instance a Firefox-driver khusus ke browser yang dipakai oleh kelas WebDriver
Jika pengujian Anda memerlukan tindakan yang lebih rumit seperti mengakses kelas lain, mengambil tangkapan layar browser, atau memanipulasi file eksternal, Anda pasti perlu mengimpor lebih banyak paket.
Membuat instance objek dan variabel
Biasanya, ini adalah bagaimana objek driver dipakai.
WebDriver driver = new FirefoxDriver();
A FirefoxKelas driver tanpa parameter berarti default Firefox profil akan diluncurkan oleh kami Java program. Standarnya Firefox profil mirip dengan peluncuran Firefox dalam mode aman (tidak ada ekstensi yang dimuat).
Demi kemudahan, kami menyimpan Basisnya. URL dan judul yang diharapkan sebagai variabel.
Meluncurkan Sesi Browser
WebDriver Dapatkan() Metode ini digunakan untuk meluncurkan sesi browser baru dan mengarahkannya ke URL yang Anda tentukan sebagai parameternya.
driver.get(baseUrl);
Dapatkan Judul Halaman Sebenarnya
Kelas WebDriver memiliki getTitle () metode yang selalu digunakan untuk mendapatkan judul halaman dari halaman yang sedang dimuat.
actualTitle = driver.getTitle();
Bandingkan Nilai yang Diharapkan dan Nilai Aktual
Bagian kode ini hanya menggunakan kode dasar Java struktur if-else untuk membandingkan judul sebenarnya dengan judul yang diharapkan.
if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); }
Mengakhiri Sesi Browser
The "Menutup()Metode โ digunakan untuk menutup jendela browser.
driver.close();
Mengakhiri Seluruh Program
Jika Anda menggunakan perintah ini tanpa menutup semua jendela browser terlebih dahulu, seluruh Java program akan berakhir sambil membiarkan jendela browser terbuka.
System.exit(0);
Menjalankan Tes
Ada dua cara untuk mengeksekusi kode Eclipse ide.
- On Eclipsebilah menu, klik Jalankan> Jalankan.
- Media Ctrl + F11 untuk menjalankan seluruh kode.
Jika Anda melakukan semuanya dengan benar, Eclipse akan menampilkan โTes Lulus!โ
Menemukan Elemen GUI
Menemukan elemen di WebDriver dilakukan dengan menggunakan โtemukanElemen(Oleh.locator())" metode. Bagian โpencari lokasiโ dari kode ini sama dengan pencari lokasi mana pun yang telah dibahas sebelumnya di Selenium IDE bab dari tutorial ini. Faktanya, Anda disarankan untuk mencari elemen GUI menggunakan IDE dan setelah berhasil diidentifikasi, ekspor kode ke WebDriver.
Berikut ini adalah Selenium Contoh kode yang menemukan elemen berdasarkan ID-nya. Facebook digunakan sebagai basis. URL.
package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG2 { public static void main(String[] args) { System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String baseUrl = "http://www.facebook.com"; String tagName = ""; driver.get(baseUrl); tagName = driver.findElement(By.id("email")).getTagName(); System.out.println(tagName); driver.close(); System.exit(0); } }
Kami menggunakan dapatkanTagName() metode untuk extracKode ini akan mengidentifikasi nama tag dari elemen tertentu yang id-nya adalah โemailโ. Saat dijalankan, kode ini seharusnya dapat mengidentifikasi nama tag โinputโ dengan benar dan akan mencetaknya. Eclipsejendela Konsol.
Ringkasan untuk menemukan elemen
| Variasi | Deskripsi | Pengiriman |
|---|---|---|
| Oleh.namakelas | menemukan elemen berdasarkan nilai atribut "kelas". | findElement(Oleh.className("someClassName")) |
| Oleh.cssSelector | menemukan elemen berdasarkan mesin Pemilih CSS yang mendasari driver | temukanElemen(Oleh.cssSelector(โinput#emailโ)) |
| Oleh.id | menempatkan elemen berdasarkan nilai atribut โidโ-nya |
findElement(Oleh.id("someId")) |
| Oleh.linkText | menemukan elemen tautan dengan teks persis yang ditampilkannya |
findElement(Oleh.linkText(โPENDAFTARANโ)) |
| Dengan nama | menempatkan elemen berdasarkan nilai atribut "nama". |
findElement(By.name("someName")) |
| Oleh.partialLinkText | menemukan elemen yang berisi teks tautan yang diberikan |
findElement(Oleh.partialLinkText(โREGโ)) |
| Oleh.tagName | menempatkan elemen berdasarkan nama tagnya |
findElement(Oleh.tagName(โdivโ)) |
| Oleh.xpath | menemukan elemen melalui XPath |
findElement(By.xpath(โ//html/body/div/table/tbody/tr/td[2]/table/ tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td[3]/ form/table/tbody/tr[5]โ)) |
Catatan tentang Menggunakan findElement(By.cssSelector())
By.cssSelector() tidak mendukung fitur "berisi". Pertimbangkan Selenium Kode IDE di bawah ini โ
In Selenium IDE di atas, seluruh tes lulus. Namun di Selenium Skrip WebDriver di bawah ini, pengujian yang sama menghasilkan kesalahan karena WebDriver tidak mendukung kata kunci โberisiโ saat digunakan dalam metode By.cssSelector().
Perintah Umum
Membuat Instansiasi Elemen Web
Daripada menggunakan sintaks โdriver.findElement(By.locator())โ yang panjang setiap kali Anda mengakses elemen tertentu, kita dapat membuat instance objek WebElement untuk elemen tersebut. Kelas WebElement terdapat dalam paket โorg.openqa.selenium.*โ.
Mengklik sebuah Elemen
Mengklik mungkin merupakan cara paling umum untuk berinteraksi dengan elemen web. Itu click() metode ini digunakan untuk mensimulasikan klik pada elemen apa pun. Berikut ini Selenium Java contoh menunjukkan caranya click() digunakan untuk mengklik Mercury Tombol โMasukโ Tur.
Hal-hal berikut harus diperhatikan saat menggunakan metode click().
- Tidak diperlukan parameter/argumen apa pun.
- Metode ini secara otomatis menunggu halaman baru dimuat jika memungkinkan.
- Elemen yang akan diklik harus terlihat (tinggi dan lebar tidak boleh sama dengan nol).
Dapatkan Perintah
Dapatkan perintah untuk mengambil berbagai informasi penting tentang halaman/elemen. Berikut adalah beberapa perintah โdapatkanโ penting yang harus Anda pahami.
| Perintah | penggunaan |
|---|---|
| Dapatkan()
Contoh penggunaan: |
|
| getTitle ()
Contoh penggunaan: |
|
| dapatkanPageSource()
Contoh penggunaan: |
|
| dapatkanUrl Saat Ini()
Contoh penggunaan: |
|
| getText ()
Contoh penggunaan: |
|
Navigasi perintah
Perintah ini memungkinkan Anda untuk menyegarkan, masuk, dan beralih antar halaman web yang berbeda.
| navigasi ke()
Contoh penggunaan: |
|
| navigasi().segarkan()
Contoh penggunaan: |
|
| navigasi().kembali()
Contoh penggunaan: |
|
| navigasi().maju()
Contoh penggunaan: |
|
Menutup dan Keluar dari Browser Windows
| Menutup()
Contoh penggunaan: |
|
| berhenti()
Contoh penggunaan: |
|
Untuk menggambarkan dengan jelas perbedaan antara close() ke quit(), coba jalankan kode di bawah ini. Ia menggunakan halaman web yang secara otomatis memunculkan jendela saat halaman dimuat dan membuka jendela lain setelah keluar.
Perhatikan bahwa hanya jendela browser induk yang ditutup, bukan dua jendela pop-up.
Namun, jika Anda menggunakan quit(), semua jendela akan ditutup โ bukan hanya jendela induknya. Coba jalankan kode di bawah ini dan Anda akan melihat bahwa dua jendela pop-up di atas juga akan ditutup secara otomatis.
package newproject; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG3 { public static void main(String[] args) { System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.popuptest.com/popuptest2.html"); driver.quit(); // using QUIT all windows will close } }
Beralih Antar Bingkai
Untuk mengakses elemen GUI dalam sebuah Frame, pertama-tama kita harus mengarahkan WebDriver untuk fokus pada frame atau jendela pop-up terlebih dahulu sebelum kita dapat mengakses elemen di dalamnya. Mari kita ambil contoh, halaman web https://demo.guru99.com/selenium/deprecated.html
Halaman ini memiliki 3 bingkai yang atribut โnamanyaโ ditunjukkan di atas. Kami ingin mengakses tautan โTidak berlaku lagiโ yang dilingkari di atas dengan warna kuning. Untuk melakukan itu, pertama-tama kita harus menginstruksikan WebDriver untuk beralih ke frame โclassFrameโ menggunakan โberalih Ke().bingkai()โ metode. Kita akan menggunakan atribut nama frame sebagai parameter untuk bagian โframe()โ.
package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG4 { public static void main(String[] args) { System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://demo.guru99.com/selenium/deprecated.html"); driver.switchTo().frame("classFrame"); driver.findElement(By.linkText("Deprecated")).click(); driver.close(); } }
Setelah mengeksekusi kode ini, Anda akan melihat bahwa frame โclassFrameโ dibawa ke halaman โDeprecated APIโ, artinya kode kita berhasil mengakses link โDeprecatedโ.
Beralih Antar Pop-up Windows
WebDriver memungkinkan jendela pop-up seperti peringatan untuk ditampilkan, tidak seperti di Selenium IDE. Untuk mengakses elemen dalam peringatan (seperti pesan yang dikandungnya), kita harus menggunakan "switchTo().alert()" metode. Dalam kode di bawah ini, kita akan menggunakan metode ini untuk mengakses kotak peringatan dan kemudian mengambil pesannya menggunakan "getText()" metode, dan kemudian secara otomatis menutup kotak peringatan menggunakan "switchTo().alert().accept()" Metode.
Pertama, pergilah ke https://output.jsbin.com/usidix/1 dan secara manual klik tombol "Mulai!" tombol di sana dan lihat sendiri teks pesannya.
Mari kita lihat Selenium contoh kode untuk melakukan ini-
package mypackage; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class myclass { public static void main(String[] args) { System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String alertMessage = ""; driver.get("http://jsbin.com/usidix/1"); driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click(); alertMessage = driver.switchTo().alert().getText(); driver.switchTo().alert().accept(); System.out.println(alertMessage); driver.quit(); } }
pada Eclipse konsol, perhatikan bahwa pesan peringatan yang dicetak adalah:
Menunggu
Ada dua macam menunggu.
- Tunggu implisit โ digunakan untuk mengatur waktu tunggu default di seluruh program
- Tunggu eksplisit โ digunakan untuk mengatur waktu tunggu untuk instance tertentu saja
Penantian Tersirat
- Lebih mudah untuk membuat kode daripada Penantian Eksplisit.
- Biasanya dideklarasikan di bagian instantiasi kode.
- Anda hanya memerlukan satu paket tambahan untuk diimpor.
Untuk mulai menggunakan penantian implisit, Anda harus mengimpor paket ini ke dalam kode Anda.
Kemudian pada bagian instantiasi kode Anda, tambahkan ini.
Penantian Eksplisit
Penantian eksplisit dilakukan menggunakan kelas WebDriverWait dan ExpectedCondition. Untuk yang berikut ini Selenium Contoh WebDriver, kita harus menunggu hingga 10 detik hingga elemen yang idnya adalah "nama pengguna" terlihat sebelum melanjutkan ke perintah berikutnya. Berikut langkah-langkahnya.
Langkah 1:
Impor dua paket ini:
Langkah 2:
Deklarasikan variabel WebDriverWait. Dalam contoh ini, kita akan menggunakan โmyWaitVarโ sebagai nama variabel.
Langkah 3:
Gunakan myWaitVar dengan ExpectedConditions pada bagian di mana Anda perlu menunggu secara eksplisit. Dalam hal ini, kami akan menggunakan menunggu eksplisit pada โnama penggunaโ (Mercury Tours HomePage) sebelum kita mengetikkan teks โtutorialโ ke dalamnya.
Kondisi
Metode berikut digunakan dalam kondisi dan pencarianping operasi โ
- diaktifkan() digunakan ketika Anda ingin memverifikasi apakah elemen tertentu diaktifkan atau tidak sebelum menjalankan perintah.
- Ditampilkan() digunakan ketika Anda ingin memverifikasi apakah elemen tertentu ditampilkan atau tidak sebelum menjalankan perintah.
- dipilih() digunakan ketika Anda ingin memverifikasi apakah suatu hal tertentu kotak centang, tombol radio, atau opsi dalam kotak drop-down dipilih. Itu tidak berfungsi pada elemen lain.
Menggunakan Kondisi yang Diharapkan
Kelas ExpectedConditions menawarkan serangkaian kondisi yang lebih luas yang dapat Anda gunakan bersama dengan metode Until() WebDriverWait.
Di bawah ini adalah beberapa metode ExpectedConditions yang paling umum.
- peringatanIsPresent() โ menunggu hingga kotak peringatan ditampilkan.
- elemenToBeClickable() โ Menunggu hingga elemen terlihat dan, pada saat yang sama, diaktifkan. Contoh Selenium Code Kode di bawah ini akan menunggu hingga elemen dengan id=โusernameโ menjadi terlihat dan diaktifkan terlebih dahulu sebelum menetapkan elemen tersebut sebagai variabel WebElement bernama โtxtUserNameโ.
- frameToBeAvailableAndSwitchToIt() โ Menunggu hingga frame tertentu sudah tersedia, lalu secara otomatis beralih ke frame tersebut.
Menangkap Pengecualian
Saat menggunakan isEnabled(), isDisplayed(), dan isSelected(), WebDriver menganggap bahwa elemen tersebut sudah ada di halaman. Jika tidak, ia akan menampilkan Tidak Ada Pengecualian Elemen Seperti Itu. Untuk menghindari hal ini, sebaiknya kita menggunakan blok try-catch agar program tidak terganggu.
WebElement txtbox_username = driver.findElement(By.id("username")); try{ if(txtbox_username.isEnabled()){ txtbox_username.sendKeys("tutorial"); } } catch(NoSuchElementException nsee){ System.out.println(nsee.toString()); }
Jika Anda menggunakan menunggu eksplisit, jenis pengecualian yang harus Anda tangkap adalah โTimeoutExceptionโ.

.png)
.png)
.png)
.png)
.png)
.png)

.png)


.png)
.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)