Penentuan posisi elemen halaman adalah hal terpenting dalam otomatisasi, dan Selenium Webdriver menyediakan banyak metode untuk penentuan posisi elemen. Penguji harus mahir dalam berbagai metode penentuan posisi. Metode penentuan posisi termudah dan paling stabil digunakan.
Konten membaca
Langkah Pengujian Otomatis
Selama pengujian otomatis, uji operasi elemen halaman yang biasa
1. Temukan elemen halaman web dan tetapkan ke objek penyimpanan (WebElement)
2. Operasi pada objek yang menyimpan elemen halaman, seperti: klik tautan, masukkan karakter di kotak input, dll.
3. Verifikasi bahwa elemen pada halaman memenuhi harapan
Melalui tiga langkah ini, kita dapat menyelesaikan pengoperasian elemen halaman, dan menemukan elemen halaman adalah langkah yang sangat penting. Elemen halaman tidak dapat ditemukan, dan tidak dapat dilakukan nanti
Kompleksitas praktis teknologi halaman web membuatnya sulit untuk menemukan sejumlah besar elemen halaman. Orang sering tidak tahu cara menemukannya.
Metode lokasi lengkap
Tentukan elemen halaman web menggunakan fungsi FindElement dari objek WebDriver
Gunakan fungsi FindElements untuk menemukan beberapa elemen halaman
Elemen halaman yang ditargetkan perlu disimpan menggunakan objek WebElement untuk penggunaan selanjutnya
Metode yang umum digunakan untuk menemukan elemen halaman adalah sebagai berikut, diurutkan berdasarkan rekomendasi
Metode penentuan posisi | Contoh Implementasi Bahasa Java |
Posisi ID | driver.findeLement (by.id ("nilai id")); |
Posisi Nama | driver.findeLement (by.name ("nilai nama")); |
Semua posisi teks tautan | driver.findeLement (by.linkText ("Semua teks tautan")); |
Beberapa posisi teks tautan | driver.findeLement (by.partiAllinkText ("Teks parsial dari tautan")); |
POSISI CSS | driver.findeLement (by.cssselector ("CSS Expression")); |
Posisi XPath | driver.findeLement (by.xpath ("xpath ekspresi")); |
Posisi Nama Kelas | driver.findeLement (by.classname ("Atribut kelas")); |
Tagname nama tag penargetan | driver.findeLement (by.tagname ("tagname")); |
Metode jQuery | Js.executscript ("return jQuery.find (" JQuery Expression ")") |
Cara menemukan
Saat menggunakan selenium webdriver untuk penentuan posisi elemen, metode findElement atau findElements biasanya digunakan untuk menggabungkan kelas dengan mengembalikan pegangan elemen untuk menemukan elemen
Metode findElement () mengembalikan elemen. Jika tidak ditemukan, pengecualian akan dilemparkan.
Metode FindElements () mengembalikan beberapa elemen. Jika tidak ditemukan, array kosong akan dikembalikan dan tidak ada pengecualian akan dilemparkan.
Cara memilih metode penentuan posisi
Strateginya adalah memilih metode penentuan posisi yang sederhana dan stabil.
1. Ketika elemen halaman memiliki atribut ID, coba gunakan ID untuk menemukannya. Jika tidak, pilih metode penentuan posisi lain
2. CSSSelector mengeksekusi dengan cepat, disarankan
3. Saat memposisikan hyperlink, Anda dapat mempertimbangkan LinkText atau PartiallinkText: tetapi harus dicatat bahwa teks tersebut sering berubah, sehingga tidak disarankan untuk menggunakannya.
4. Xpath memiliki fungsi yang paling kuat. Kecepatan eksekusi lambat pada waktu itu, karena Anda perlu menemukan seluruh DOM, jadi cobalah untuk menggunakannya sesedikit mungkin. Ketika benar -benar tidak ada jalan, gunakan xpath
Temukan elemen oleh ID: by.id ()
Cara yang paling disarankan untuk menemukan elemen melalui ID elemen halaman. W3C Standard merekomendasikan agar pengembang menyediakan atribut ID unik untuk setiap elemen halaman.
Setelah elemen diberikan atribut ID yang unik, mudah untuk menemukan elemen saat kami melakukan pengujian otomatis. ID elemen digunakan sebagai atribut identifikasi yang disukai karena merupakan strategi identifikasi tercepat.
Mengambil Beranda Baidu sebagai contoh, kode sampel HTML dari kotak pencarian adalah sebagai berikut, ID -nya adalah KW
<input type = "text" autoComplete = "off" maxlength = "100" id = "kW" name = "wd">
Kode sampel HTML untuk elemen tombol pencarian "Baidu" adalah sebagai berikut, ID -nya adalah Su
<input type = "kirim" id = "su" value = "baidu">
Kode sampel Java untuk menemukan elemen oleh ID dalam selenium/webdriver adalah sebagai berikut
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.baidu.com"); WebElement Searchbox = driver.findElement (by.id ("kW")); SearchBox.Sendkeys ("Little Tank Blog Park"); WebElement SearchButton = driver.findElement (by.id ("su")); searchbutton.submit (); driver.close ();Temukan elemen dengan nama: by.name ()
Mengambil Kotak Pencarian Beranda Douban.com sebagai contoh, kode HTML dari kotak pencariannya adalah sebagai berikut, namanya adalah: Q
<input type = "text" autocomplete = "off" name = "q" placeholder = "Buku, film, musik, grup, stasiun, anggota" size = "12" maxlength = "60">
Kode Java di WebDriver untuk mencari kotak pencarian di beranda Doban melalui nama adalah sebagai berikut:
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.douban.com"); WebElement SearchBox = driver.findElement (by.name ("q")); Searchbox.sendkeys ("Tangki Kecil"); Searchbox.submit ();Temukan Elemen oleh Tagname: by.tagname ()
Saat mencari elemen melalui tagName, beberapa elemen akan dikembalikan. Oleh karena itu, FindElements () diperlukan.
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.cnblogs.com"); Daftar <sebelement> tombol = driver.findElements (by.tagname ("div")); System.out.println ("Tombol:" + Tombol.Size ());Catatan: Jika Anda menggunakan TagName, Anda harus mencatat bahwa tagname dari banyak elemen HTML adalah sama.
Misalnya, kotak radio, kotak centang, kotak teks, kotak kata sandi. Tag elemen ini semuanya adalah input. Pada saat ini, tagname saja tidak dapat secara akurat mendapatkan elemen yang kami inginkan. Anda juga perlu menggabungkan atribut tipe untuk memfilter elemen yang kami inginkan.
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.cnblogs.com"); Daftar <sebelement> tombol = driver.findElements (by.tagname ("input")); untuk (WebElement WebElement: Tombol) {if (WebElement.GetAttribute ("Type"). Equals ("Text")) {System.out.println ("Teks input adalah:" + webelement.getText ()); }}Temukan elemen dengan nama kelas
Mengambil pencarian beranda Taobao sebagai contoh, kode HTML dari kotak pencariannya adalah sebagai berikut:
<input autocomplete = "off" autofocus = "true" accessKey = "s" aria-label = "Harap masukkan teks pencarian" name = "q" id = "q" aria-haspopup = "true" aria-combobox = "daftar" role = "combobox" x-webkit-grammar = "buildin" translate "Tabindex =" "X-WEBKIT-GRAMMAR =" Buildin: Translate "Tabindex ="
Kode Sampel Java adalah sebagai berikut
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.taobao.com"); Thread.sleep (15000); WebElement SearchBox = driver.FindElement (by.className ("pencarian-combobox-input")); SearchBox.Sendkeys ("Down Jacket"); Searchbox.submit (); Catatan: Saat menggunakan ClassName untuk menemukan elemen, Anda terkadang menemukan a
Temukan elemen oleh linkText by.linkText ();
Elemen posisi langsung melalui informasi teks di hyperlink: mis.
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" onclick = "return false;"> Login </a>
Kode HTML adalah sebagai berikut
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.baidu.com"); WebElement LoginLink = driver.FindElement (by.linkText ("Login")); loginlink.click ();Temukan Elemen oleh PartiAlkText ()
Metode ini adalah versi yang ditingkatkan dari metode sebelumnya. Ketika Anda hanya ingin mencocokkan dengan beberapa kata kunci, Anda dapat menggunakan metode ini untuk menemukan elemen melalui beberapa teks hyperlink.
Kode HTML adalah sebagai berikut
Driver webdriver = firefoxdriver baru (); driver.get ("http://www.baidu.com"); WebElement LoginLink = driver.FindElement (by.partiAllInkText ("log")); loginlink.click ();Catatan: Saat menggunakan metode ini untuk menemukan, masalahnya mungkin disebabkan adalah bahwa ketika Anda tidak tahu bahwa hyperlink berisi "dll". Metode FindElement hanya akan mengembalikan elemen pertama yang ditemukan, dan tidak akan mengembalikan semua elemen yang memenuhi kriteria.
Jika Anda ingin mendapatkan semua elemen yang memenuhi kriteria, Anda hanya dapat menggunakan metode FindElements.
Di atas adalah informasi tentang posisi elemen selenium java. Kami akan terus menambahkan informasi yang relevan di masa mendatang. Terima kasih atas dukungan Anda!