Formulir adalah elemen web dasar untuk menerima informasi dari pengunjung situs web. Formulir web memiliki elemen GUI yang berbeda seperti kotak teks, bidang kata sandi, kotak centang, tombol radio, dropdown, input file, dll.
Kita akan melihat bagaimana mengakses elemen bentuk yang berbeda ini menggunakan Selenium Web Driver dengan Java. Selenium merangkum setiap elemen bentuk sebagai objek WebElement. Ini menyediakan API untuk menemukan elemen dan mengambil tindakan padanya seperti memasukkan teks ke dalam kotak teks, mengklik tombol, dll. Kita akan melihat metode yang tersedia untuk mengakses setiap elemen formulir.
Dalam tutorial ini, kita akan melihat bagaimana mengidentifikasi elemen form berikut
- Pengantar WebElement, findElement (), findElements ()
- Kotak Masukan
- Memasukkan Nilai dalam Kotak Masukan
- Menghapus Nilai dalam Kotak Input
- Tombol
- Tombol Kirim
- Kode Lengkap
- Penyelesaian masalah
Pengantar WebElement, findElement (), findElements ()
Selenium Web Driver merangkum elemen bentuk sederhana sebagai objek WebElement.
Ada berbagai teknik yang digunakan WebDriver untuk mengidentifikasi elemen formulir berdasarkan properti yang berbeda dari elemen Web seperti ID, Nama, Kelas, XPath, Tagname, Pemilih CSS, Teks tautan, dll.
Driver Web menyediakan dua metode WebElement berikut untuk menemukan elemen.
- findElement () - menemukan satu elemen web dan mengembalikan sebagai objek Selenium WebElement.
- findElements () - mengembalikan daftar objek WebElement yang cocok dengan kriteria pelacak.
Mari kita lihat cuplikan kode untuk mendapatkan satu elemen - Bidang Teks di halaman web sebagai objek WebElement menggunakan metode findElement (). Kita akan membahas metode findElements () untuk menemukan banyak elemen dalam tutorial berikutnya.
Langkah 1: Kita perlu mengimpor paket ini untuk membuat objek Elemen Web
Langkah 2: Kita perlu memanggil metode findElement () yang tersedia di kelas WebDriver dan mendapatkan objek WebElement.
Lihat di bawah untuk melihat cara melakukannya.
Kotak Masukan
Kotak masukan mengacu pada salah satu dari dua jenis ini:
- Bidang Teks - Kotak teks masukan selenium yang menerima nilai yang diketik dan menampilkannya sebagaimana adanya.
- Bidang Kata Sandi - kotak teks yang menerima nilai yang diketik tetapi menyembunyikannya sebagai rangkaian karakter khusus (biasanya titik dan tanda bintang) untuk menghindari nilai sensitif ditampilkan.
Locators
Metode findElement () mengambil satu parameter yang merupakan pelacak ke elemen. Locator yang berbeda seperti By.id (), By.name (), By.xpath (), By.CSSSelector () dll. Letakkan elemen di halaman menggunakan propertinya seperti `` '' id, name atau path, dll.
Anda dapat menggunakan plugin seperti Fire path untuk mendapatkan bantuan mendapatkan id, xpath, dll. Dari elemen.
Menggunakan contoh situs http://demo.guru99.com/test/login.html yang diberikan di bawah ini adalah kode untuk menemukan kolom teks "Alamat email" menggunakan pencari ID dan kolom "Sandi" menggunakan pencari nama.
- Bidang teks email terletak menurut Id
- Bidang kata sandi terletak menurut nama
sendkeys di Selenium
sendkeys () di Selenium adalah metode yang digunakan untuk memasukkan konten yang dapat diedit di bidang teks dan kata sandi selama eksekusi uji. Bidang ini diidentifikasi menggunakan pencari lokasi seperti nama, kelas, id, dll. Ini adalah metode yang tersedia di elemen web. Tidak seperti metode tipe, metode sendkeys () tidak menggantikan teks yang ada di kotak teks mana pun.
Memasukkan Nilai dalam Kotak Masukan
Untuk memasukkan teks ke dalam Bidang Teks dan Bidang Kata Sandi, sendKeys () adalah metode yang tersedia di WebElement di Selenium.
Menggunakan contoh yang sama dari situs http://demo.guru99.com/test/login.html, berikut adalah cara kami menemukan bidang Teks dan Kata sandi dan memasukkan teks dalam Selenium.
- Temukan bidang Teks "Alamat Email" menggunakan pencari id.
- Temukan bidang "Sandi" menggunakan pencari nama
- Masukkan teks ke dalam "Alamat Email" menggunakan metode tombol kirim Selenium.
- Masukkan kata sandi ke dalam bidang "Kata Sandi" menggunakan metode sendKeys ().
Menghapus Nilai dalam Kotak Input
Metode clear () digunakan untuk menghapus teks di kotak input. Metode ini tidak membutuhkan parameter . Potongan kode di bawah ini akan menghapus teks dari bidang Email atau Kata Sandi
Tombol
Tombol klik Selenium dapat diakses menggunakan metode click ().
Pada contoh di atas
- Temukan tombol untuk Masuk
- Klik pada tombol "Sign-in" di halaman login situs untuk login ke situs.
Tombol Kirim
Tombol kirim digunakan untuk mengirimkan seluruh formulir ke server. Kita dapat menggunakan metode click () pada elemen web seperti tombol normal seperti yang telah kita lakukan di atas atau menggunakan metode submit () pada elemen web mana pun dalam formulir atau pada tombol kirim itu sendiri.
Saat submit () digunakan, WebDriver akan mencari DOM untuk mengetahui dari bentuk mana elemen tersebut, dan kemudian memicu fungsi pengirimannya.
Kode Lengkap
Ini kode kerja lengkapnya
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;Formulir kelas publik {public static void main (String [] args) {// deklarasi dan pembuatan instance objek / variabelSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = new ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Dapatkan WebElement yang sesuai dengan Alamat Email (TextField)WebElement email = driver.findElement (By.id ("email"));// Dapatkan WebElement yang sesuai dengan Bidang Kata SandiWebElement password = driver.findElement (By.name ("passwd"));email.sendKeys (" Alamat email ini dilindungi dari robot spam. Anda harus mengaktifkan JavaScript untuk melihatnya.");password.sendKeys ("abcdefghlkjl");System.out.println ("Kumpulan Bidang Teks");// Menghapus nilai di kotak teksemail.clear ();password.clear ();System.out.println ("Bidang Teks Dihapus");// Temukan tombol kirimWebElement login = driver.findElement (By.id ("SubmitLogin"));// Menggunakan metode klik untuk mengirimkan formuliremail.sendKeys (" Alamat email ini dilindungi dari robot spam. Anda harus mengaktifkan JavaScript untuk melihatnya."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Masuk Selesai dengan Klik"); // menggunakan metode kirim untuk mengirimkan formulir. Kirimkan digunakan pada password field driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Alamat email ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Masuk Selesai dengan Kirim"); //driver.close (); }}
Penyelesaian masalah
Jika Anda menemukan NoSuchElementException () saat menemukan elemen, itu berarti elemen tersebut tidak ditemukan di halaman saat driver Web mengakses halaman tersebut.
- Periksa pencari lokasi Anda lagi menggunakan Firepath atau Inspect Element di Chrome.
- Periksa apakah nilai yang Anda gunakan dalam kode berbeda dari nilai untuk elemen di Firepath sekarang.
- Beberapa properti bersifat dinamis untuk beberapa elemen. Jika, Anda menemukan bahwa nilainya berbeda dan berubah secara dinamis, pertimbangkan untuk menggunakan By.xpath () atau By.cssSelector () yang merupakan cara yang lebih andal tetapi kompleks.
- Kadang-kadang, ini bisa menjadi masalah menunggu juga, yaitu, driver Web mengeksekusi kode Anda bahkan sebelum halaman dimuat sepenuhnya, dll.
- Tambahkan menunggu sebelum findElement () menggunakan menunggu implisit atau eksplisit.
Ringkasan
- Tabel di bawah ini merangkum perintah untuk mengakses setiap jenis elemen yang dibahas di atas
Elemen | Perintah | Deskripsi |
---|---|---|
Kotak Masukan | sendKeys () | digunakan untuk memasukkan nilai ke kotak teks |
bersih() | digunakan untuk menghapus kotak teks dari nilainya saat ini | |
Tautan | klik() | digunakan untuk mengklik tautan dan menunggu pemuatan halaman selesai sebelum melanjutkan ke perintah berikutnya. |
Tombol Kirim | Kirimkan() |
- WebDriver memungkinkan pemilihan lebih dari satu opsi dalam beberapa elemen SELECT.
- Anda bisa menggunakan metode submit () pada elemen apa pun di dalam formulir. WebDriver secara otomatis akan memicu fungsi kirim dari formulir tempat elemen tersebut berada.