Borang adalah elemen asas web untuk menerima maklumat dari pelawat laman web. Bentuk web mempunyai elemen GUI yang berbeza seperti kotak Teks, medan Kata Laluan, Kotak Centang, butang Radio, dropdown, input fail, dll.
Kami akan melihat bagaimana mengakses elemen bentuk yang berbeza ini menggunakan Selenium Web Driver dengan Java. Selenium merangkum setiap elemen bentuk sebagai objek WebElement. Ini menyediakan API untuk mencari elemen dan mengambil tindakan seperti memasukkan teks ke dalam kotak teks, mengklik butang, dan lain-lain. Kami akan melihat kaedah yang tersedia untuk mengakses setiap elemen borang.
Dalam tutorial ini, kita akan melihat bagaimana mengenal pasti elemen bentuk berikut
- Pengenalan WebElement, findElement (), findElements ()
- Kotak Input
- Memasukkan Nilai dalam Kotak Input
- Memadamkan Nilai dalam Kotak Input
- Butang
- Kirim Butang
- Kod Lengkap
- Penyelesaian masalah
Pengenalan WebElement, findElement (), findElements ()
Pemandu Web Selenium merangkumi elemen bentuk ringkas sebagai objek WebElement.
Terdapat pelbagai teknik di mana WebDriver mengenal pasti elemen bentuk berdasarkan sifat yang berbeza dari elemen Web seperti ID, Nama, Kelas, XPath, Tagname, Pemilih CSS, Teks pautan, dll.
Pemacu Web menyediakan dua kaedah WebElement berikut untuk mencari unsur-unsurnya.
- findElement () - mencari elemen web tunggal dan kembali sebagai objek WebElement Selenium.
- findElements () - mengembalikan senarai objek WebElement yang sesuai dengan kriteria pencari.
Mari lihat coretan kod untuk mendapatkan satu elemen - Medan Teks di laman web sebagai objek WebElement menggunakan kaedah findElement (). Kami akan merangkumi kaedah findElements () untuk mencari pelbagai elemen dalam tutorial seterusnya.
Langkah 1: Kita perlu mengimport pakej ini untuk membuat objek Elemen Web
Langkah 2: Kita perlu memanggil kaedah findElement () yang tersedia di kelas WebDriver dan mendapatkan objek WebElement.
Rujuk di bawah untuk melihat bagaimana ia dilakukan.
Kotak Input
Kotak input merujuk kepada salah satu daripada dua jenis berikut:
- Medan Teks - Kotak teks input Selenium yang menerima nilai yang ditaip dan menunjukkannya sebagaimana adanya.
- Medan Kata Laluan - kotak teks yang menerima nilai yang ditaip tetapi menutupnya sebagai rangkaian watak khas (biasanya titik dan tanda bintang) untuk mengelakkan nilai sensitif ditampilkan.
Pencari
Kaedah findElement () mengambil satu parameter yang merupakan pencari ke elemen. Pencari yang berbeza seperti By.id (), By.name (), By.xpath (), By.CSSSelector () dll mencari unsur-unsur dalam halaman menggunakan sifat mereka seperti "" "id, nama atau jalan, dan lain-lain.
Anda boleh menggunakan pemalam seperti Fire path untuk mendapatkan bantuan mendapatkan ID, xpath, dan lain-lain elemen.
Menggunakan laman contoh http://demo.guru99.com/test/login.html yang diberikan di bawah adalah kod untuk mencari medan teks "Alamat e-mel" menggunakan pencari id dan medan "Kata Laluan" menggunakan pencari nama.
- Medan teks e-mel terletak di Id
- Medan kata laluan terletak mengikut nama
kod sent di Selenium
sendkeys () dalam Selenium adalah kaedah yang digunakan untuk memasukkan kandungan yang dapat diedit dalam teks dan kata laluan semasa pelaksanaan ujian. Medan ini dikenal pasti menggunakan pencari seperti nama, kelas, id, dan lain-lain. Ini adalah kaedah yang terdapat pada elemen web. Tidak seperti kaedah jenis, kaedah sendkeys () tidak menggantikan teks yang ada di kotak teks mana pun.
Memasukkan Nilai dalam Kotak Input
Untuk memasukkan teks ke dalam Medan Teks dan Kata Laluan, sendKeys () adalah kaedah yang tersedia di WebElement di Selenium.
Dengan menggunakan contoh yang sama dari laman http://demo.guru99.com/test/login.html, berikut adalah cara kami mencari bidang Teks dan medan Kata Laluan dan memasukkan teks di Selenium.
- Cari medan Teks "Alamat E-mel" menggunakan pencari id.
- Cari medan "Kata Laluan" menggunakan pencari nama
- Masukkan teks ke dalam "Alamat E-mel" menggunakan kaedah selenium sendkeys.
- Masukkan kata laluan ke dalam medan "Kata Laluan" menggunakan kaedah sendKeys ().
Memadamkan Nilai dalam Kotak Input
Kaedah clear () digunakan untuk menghapus teks dalam kotak input. Kaedah ini tidak memerlukan parameter . Coretan kod di bawah akan membersihkan teks dari medan E-mel atau Kata Laluan
Butang
Butang klik Selenium dapat diakses menggunakan kaedah klik ().
Dalam contoh di atas
- Cari butang untuk Log masuk
- Klik pada Butang "Log Masuk" di halaman log masuk laman web untuk masuk ke laman web.
Kirim Butang
Butang hantar digunakan untuk menyerahkan keseluruhan borang ke pelayan. Kita boleh menggunakan kaedah klik () pada elemen web seperti butang biasa seperti yang kita lakukan di atas atau menggunakan kaedah kirim () pada elemen web apa pun dalam bentuk atau pada butang kirim itu sendiri.
Semasa kirim () digunakan, WebDriver akan mencari DOM untuk mengetahui bentuk elemen mana, dan kemudian memicu fungsi pengirimannya.
Kod Lengkap
Inilah kod kerja yang lengkap
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;Borang kelas awam {utama kekosongan statik awam (String [] args) {// pengisytiharan dan penentuan objek / pemboleh ubahSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Pemacu WebDriver = ChromeDriver baru ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Dapatkan WebElement yang sesuai dengan Alamat E-mel (TextField)E-mel WebElement = driver.findElement (By.id ("e-mel"));// Dapatkan WebElement yang sesuai dengan Medan Kata LaluanKata laluan WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Alamat e-mel ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya.");kata laluan.sendKeys ("abcdefghlkjl");System.out.println ("Set Medan Teks");// Menghapus nilai di kotak tekse-mel.clear ();kata laluan.kelas ();System.out.println ("Medan Teks Dihapus");// Cari butang hantarLog masuk WebElement = driver.findElement (By.id ("SubmitLogin"));// Menggunakan kaedah klik untuk menghantar borangemail.sendKeys (" Alamat e-mel ini dilindungi dari robot spam. Anda perlu mengaktifkan JavaScript untuk melihatnya."); kata laluan.sendKeys ("abcdefghlkjl"); log masuk.klik (); System.out.println ("Login Selesai dengan Klik"); // menggunakan kaedah hantar untuk menghantar borang. Hantar digunakan pada kata laluan bidang driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Alamat e-mel ini dilindungi dari robot spam. Anda perlu menghidupkan JavaScript untuk melihatnya."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). hantar (); System.out.println ("Masuk Selesai dengan Hantar"); //driver.close (); }}
Penyelesaian masalah
Sekiranya anda menemui NoSuchElementException () semasa mencari elemen, ini bermaksud bahawa elemen tersebut tidak dijumpai di halaman pada saat pemacu Web mengakses halaman.
- Periksa pencari anda lagi menggunakan Firepath atau Inspect Element di Chrome.
- Periksa sama ada nilai yang anda gunakan dalam kod itu berbeza dengan nilai untuk elemen di Firepath sekarang.
- Beberapa sifat bersifat dinamik untuk beberapa elemen. Sekiranya, anda dapati nilainya berbeza dan berubah secara dinamik, pertimbangkan untuk menggunakan By.xpath () atau By.cssSelector () yang cara yang lebih dipercayai tetapi kompleks.
- Kadang-kadang, ini juga boleh menjadi masalah penantian iaitu, pemandu Web melaksanakan kod anda sebelum halaman dimuat sepenuhnya, dll.
- Tambahkan tunggu sebelum findElement () menggunakan penantian tersirat atau tersurat.
Ringkasan
- Jadual di bawah merangkum arahan untuk mengakses setiap jenis elemen yang dibincangkan di atas
Unsur | Perintah | Penerangan |
---|---|---|
Kotak Input | hantar kunci () | digunakan untuk memasukkan nilai ke dalam kotak teks |
jelas () | digunakan untuk membersihkan kotak teks dari nilai semasa | |
Pautan | klik () | digunakan untuk mengklik pautan dan menunggu pemuatan halaman selesai sebelum meneruskan ke perintah seterusnya. |
Butang Hantar | serahkan () |
- WebDriver membolehkan pemilihan lebih daripada satu pilihan dalam elemen SELECT berganda.
- Anda boleh menggunakan kaedah kirim () pada elemen apa pun dalam borang. WebDriver secara automatik akan mencetuskan fungsi hantar borang di mana elemen tersebut berada.