Selenium Driver web Java Contoh Program (Contoh Kode)

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 Kode Contoh WebDriver

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 = "http://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:

  1. org.openqa.selenium.*– berisi kelas WebDriver yang diperlukan untuk membuat instance browser baru yang dimuat dengan driver tertentu
  2. 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 kenyamanan, kami menyimpan URL Dasar 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.

  1. On Eclipsebilah menu, klik Jalankan> Jalankan.
  2. Tekan Ctrl + F11 untuk menjalankan seluruh kode.

Menjalankan Tes

Jika Anda melakukan semuanya dengan benar, Eclipse akan menampilkan “Tes Lulus!”

Menjalankan Tes

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 kode contoh yang menemukan elemen berdasarkan idnya. Facebook digunakan sebagai URL Dasar.

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 mengekstrak nama tag dari elemen tertentu yang id-nya adalah “email”. Ketika dijalankan, kode ini seharusnya dapat mengidentifikasi nama tag “input” dengan benar dan akan mencetaknya di Eclipsejendela Konsol.

Menemukan Elemen GUI

Ringkasan untuk menemukan elemen

Variasi Description Contoh
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 –

Catatan tentang Menggunakan findElement(By.cssSelector())

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

Catatan tentang Menggunakan findElement(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.*”.

Membuat Instansiasi Elemen Web

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.

Mengklik sebuah Elemen

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:

  • Secara otomatis membuka jendela browser baru dan mengambil halaman yang Anda tentukan di dalam tanda kurung.
  • Ini adalah mitra dari Selenium Perintah "buka" IDE.
  • Parameternya harus a String obyek.
getTitle ()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Mengambil judul halaman saat ini
  • Spasi putih di depan dan di belakang dipangkas
  • Mengembalikan string nol jika halaman tidak memiliki judul
dapatkanPageSource()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Mengembalikan kode sumber halaman sebagai nilai String
dapatkanUrl Saat Ini()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Mengambil string yang mewakili URL saat ini yang sedang dilihat browser
getText ()

Contoh penggunaan:

  • Mengambil teks bagian dalam elemen yang Anda tentukan

Navigasi perintah

Perintah ini memungkinkan Anda untuk menyegarkan, masuk, dan beralih antar halaman web yang berbeda.

navigasi ke()

Contoh penggunaan:

  • Secara otomatis membuka jendela browser baru dan mengambil halaman yang Anda tentukan di dalam tanda kurung.
  • Ia melakukan hal yang persis sama dengan get() Metode.
navigasi().segarkan()

Contoh penggunaan:

  • Tidak memerlukan parameter.
  • Ini menyegarkan halaman saat ini.
navigasi().kembali()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Membawa Anda kembali satu halaman pada riwayat browser.
navigasi().maju()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Membawa Anda maju satu halaman pada riwayat browser.

Menutup dan Keluar dari Browser Windows

Menutup()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Ini hanya menutup jendela browser yang saat ini dikontrol oleh WebDriver.
berhenti()

Contoh penggunaan:

  • Tidak memerlukan parameter
  • Menutup semua jendela yang dibuka WebDriver.

Menutup dan Keluar dari Browser Windows

Untuk menggambarkan dengan jelas perbedaan antara close() dan 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.

Menutup dan Keluar dari Browser Windows

Perhatikan bahwa hanya jendela browser induk yang ditutup, bukan dua jendela pop-up.

Menutup dan Keluar dari Browser Windows

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 http://demo.guru99.com/selenium/deprecated.html

Beralih Antar Bingkai

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("http://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.

Beralih Antar Pop-up Windows

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:

Beralih Antar Pop-up Windows

Menunggu

Ada dua macam menunggu.

  1. Tunggu implisit – digunakan untuk mengatur waktu tunggu default di seluruh program
  2. 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.

Penantian Tersirat

Kemudian pada bagian instantiasi kode Anda, tambahkan ini.

Penantian Tersirat

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:

Penantian Eksplisit

Langkah 2:

Deklarasikan variabel WebDriverWait. Dalam contoh ini, kita akan menggunakan “myWaitVar” sebagai nama variabel.

Penantian Eksplisit

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.

Penantian Eksplisit

Kondisi

Metode berikut digunakan dalam operasi kondisional dan perulangan —

  • diaktifkan() digunakan ketika Anda ingin memverifikasi apakah elemen tertentu diaktifkan atau tidak sebelum menjalankan perintah.

Kondisi Diaktifkan()

  • Ditampilkan() digunakan ketika Anda ingin memverifikasi apakah elemen tertentu ditampilkan atau tidak sebelum menjalankan perintah.

Kondisi Ditampilkan()

  • 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.

Ketentuan dipilih()

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.

Menggunakan ExpectedConditions alertIsPresent()

  • elemenToBeClickable() – Menunggu hingga elemen terlihat dan, pada saat yang sama, diaktifkan. Contoh Selenium Kode di bawah ini akan menunggu hingga elemen dengan id=”nama pengguna” terlihat dan diaktifkan terlebih dahulu sebelum menetapkan elemen tersebut sebagai variabel WebElement bernama “txtUserName”.

Menggunakan Kondisi yang Diharapkan

  • frameToBeAvailableAndSwitchToIt() – Menunggu hingga frame tertentu sudah tersedia, lalu secara otomatis beralih ke frame tersebut.

Menggunakan elemen ExpectConditionsToBeClickable()

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”.

Menangkap Pengecualian

Kesimpulan

  • Untuk mulai menggunakan WebDriver API, Anda harus mengimpor setidaknya dua paket ini.
  • org.openqa.selenium.*
  • org.openqa.selenium.firefox.Firefoxsopir
  • get() metode setara dengan Selenium Perintah "buka" IDE.
  • Menemukan elemen di WebDriver dilakukan dengan menggunakan findElement() Metode.
  • Berikut ini adalah pilihan yang tersedia untuk menemukan elemen di WebDriver:
  • Oleh.namakelas
  • Oleh.cssSelector
  • Oleh.id
  • Oleh.linkText
  • Dengan nama
  • Oleh.partialLinkText
  • Oleh.tagName
  • Oleh.xpath
  • Oleh.cssSelector() tidak mendukung "mengandung" fitur.
  • Anda dapat membuat instance elemen menggunakan kelas WebElement.
  • Mengklik suatu elemen dilakukan dengan menggunakan click() Metode.
  • WebDriver menyediakan perintah get yang berguna ini:
  • Dapatkan()
  • getTitle ()
  • dapatkanPageSource()
  • dapatkanUrl Saat Ini()
  • getText ()
  • WebDriver menyediakan perintah navigasi yang berguna ini
  • navigasi().maju()
  • navigasi().kembali()
  • navigasi ke()
  • navigasi().segarkan()
  • Metode close() dan quit() digunakan untuk menutup jendela browser. Close() digunakan untuk menutup satu jendela; ketika quit() digunakan untuk menutup semua jendela yang terkait dengan jendela induk yang dikontrol oleh objek WebDriver.
  • switchTo().frame() dan switchTo().alert() metode digunakan untuk mengarahkan fokus WebDriver ke bingkai atau peringatan.
  • Implicit waits digunakan untuk mengatur waktu tunggu sepanjang program, sementara explicit waits hanya digunakan pada porsi tertentu saja.
  • Anda dapat menggunakan isEnabled(), isDisplayed(),isSelected(), dan kombinasi keduanya WebDriverTunggu dan Kondisi yang Diharapkan metode saat memverifikasi status suatu elemen. Namun, mereka tidak memverifikasi apakah elemen tersebut tidak ada.
  • Ketika isEnabled(), isDisplayed(), atau isSelected() dipanggil saat elemen tidak ada, WebDriver akan memunculkan Tidak Ada Pengecualian Elemen Seperti Itu.
  • Ketika metode WebDriverWait dan ExpectedConditions dipanggil saat elemen tidak ada, WebDriver akan memunculkan a TimeoutException.

Catatan:

driver.get(): Metode ini digunakan untuk menavigasi ke situs web tertentu. Namun, metode ini tidak menyimpan riwayat peramban atau kuki. Akibatnya, tombol maju dan mundur tidak akan berfungsi, dan mengekliknya tidak akan menjadwalkan navigasi halaman.

driver.navigate(): Metode ini juga digunakan untuk menavigasi ke situs web tertentu, tetapi tetap menyimpan riwayat peramban dan kuki. Ini memungkinkan tombol maju dan mundur digunakan untuk navigasi antar halaman saat mengodekan kasus uji.

Baca Selengkapnya Baca lebih lajut