


Cara Menulis dan Mengendalikan XPath Dinamik Dalam Selenium [dengan Taktik]
Adalah penting untuk ujian automatik dapat mengenali elemen web bagi Aplikasi Dalam Ujian (AUT). Mempelajari cara mencari elemen web dan menulis XPath dinamik dalam Selenium secara manual mungkin mengambil masa yang lama dan banyak latihan.
Sebagai contoh, kami akan menunjukkan kepada anda cara mencari elemen web secara manual dan mudah dalam Selenium menggunakan XPath.
Pencari ialah salah satu ciri berharga Selenium. Mereka membolehkan kami mencari elemen web. Contohnya, jika pencari seperti id, nama kelas, nama, teks pautan, dsb., tidak menemui elemen web, kami menggunakan XPath untuk mencarinya di halaman web.
Apakah Dynamic XPath Dalam Selenium?
XPath, juga dikenali sebagai Laluan XML, ialah salah satu pengesan Selenium WebDriver yang paling biasa digunakan untuk menavigasi melalui struktur HTML halaman. Ia boleh digunakan untuk mencari sebarang elemen dalam halaman web menggunakan struktur DOM HTML dalam dokumen HTML dan XML.
XPath bertujuan untuk membenarkan navigasi dokumen XML memilih elemen individu, atribut atau bahagian lain dokumen XML untuk pemprosesan tertentu. Contohnya, XPath menjana pencari yang boleh dipercayai, tetapi ia lebih perlahan dari segi prestasi berbanding Pemilih CSS.
Bahasa XPath digunakan untuk memilih elemen dalam halaman HTML. Menggunakan XPath, anda boleh mencari sebarang elemen pada halaman berdasarkan nama tegnya, ID, kelas CSS dan sebagainya. Dalam Selenium, terdapat dua jenis XPath.
Pendekatan Berbeza untuk Mencari Elemen menggunakan Dynamic XPath dalam Selenium:
01 XPath Mutlak
Ini adalah cara paling langsung untuk mencari elemen, tetapi kelemahan "XPath mutlak" ialah jika laluan elemen berubah, XPath tertentu itu gagal.
Ciri kritikal XPath ialah ia bermula dengan satu garis miring ke hadapan (/), menunjukkan bahawa anda boleh memilih elemen daripada nod akar menggunakan Dynamic XPath.
02 XPath Relatif
Xpath relatif ialah satu laluan di mana laluan bermula pada nod pilihan anda dan bukannya nod akar.
Faedah menggunakan XPath relatif ialah anda tidak perlu menentukan keseluruhan XPath; sebaliknya, anda boleh bermula di tengah atau di suatu tempat di antaranya.
*Kelemahan: *
Mengenal pasti elemen akan mengambil masa yang lebih lama kerana kami menentukan laluan separa dan bukannya laluan yang tepat.
Jika berbilang elemen berada pada laluan yang sama, ia akan memilih elemen pertama yang dikenal pasti.
Bagaimana untuk mencari XPath untuk elemen dinamik dalam selenium?
Daripada nod konteks (semasa), paksi XPath mencari nod yang berbeza dalam dokumen XML. Contohnya, ia digunakan untuk mencari nod yang paling hampir dengan pokok itu.
Paksi XPath ialah kaedah untuk mencari elemen dinamik yang mustahil ditemui menggunakan kaedah XPath standard yang tidak termasuk ID, Nama Kelas, Nama atau pengecam lain.
Kaedah paksi digunakan untuk mencari elemen yang berubah secara dinamik akibat penyegaran atau operasi lain. Contohnya, kaedah anak, ibu bapa, moyang, adik beradik, sebelumnya, diri sendiri dan kaedah paksi lain biasanya digunakan dalam Selenium Webdriver.
Mereka mengubah suai skrip ujian apabila perubahan AUT merupakan salah satu tugas yang paling kompleks dan memakan masa dalam automasi ujian, terutamanya pada peringkat awal pembangunan perisian.
Akibatnya, pembangun mungkin kerap menukar pengecam dan elemen daripada satu binaan kepada yang lain. Tambahan pula, elemen AUT mungkin berubah secara dinamik semasa pelaksanaan.
Untuk menangani isu ini, penguji automasi tidak seharusnya menetapkan XPath tetap untuk elemen kes ujian tetapi sebaliknya menskrip XPath secara dinamik berdasarkan corak tertentu.
11 Cara Unik untuk Mencipta XPath Dinamik dalam Selenium:
Berikut ialah 11 cara unik dan berbeza untuk mencipta XPath dinamik dalam selenium:
cloud-cta-peranti-sebenar.jpg
01 Menggunakan Slash Tunggal
Mekanisme ini juga dikenali sebagai penemuan elemen XPath Mutlak.
Sintaks:
html/body/div[1]/div[2]/div[2]/div[1]/form/div[1]/div/div[1]/div/div/input[1]
Tanda miring tunggal digunakan untuk mencipta XPath dengan laluan mutlak, iaitu, XPath direka bentuk untuk memulakan pemilihan daripada nod dokumen/nod mula/nod induk.
02 Menggunakan Double Slash
Mekanisme ini juga dirujuk sebagai elemen mencari dengan XPath Relatif.
Seratan berganda digunakan untuk mencipta XPath dengan laluan relatif, yang bermaksud XPath boleh memulakan pemilihan dari mana-mana sahaja dalam dokumen. Kemudian, cari rentetan sebelumnya merentas seluruh halaman (DOM).
Sintaks
//form/div[1]/div/div[1]/div/div/input[1]
03 Menggunakan Atribut Tunggal
Sintaks boleh ditulis dalam dua cara, seperti yang ditunjukkan di bawah. Kemasukan atau pengecualian Tag HTML. Jika anda ingin mengecualikan teg HTML, anda mesti menggunakan *.
Sintaks
//[@attribute_name='attribute_value']
atau
//*[@attribute_name='attribute_value']
04 Menggunakan Pelbagai Atribut
Sintaks
//[@attribute_name1='attribute_value1'][@attribute_name2='attribute_value2]
atau
//*[@attribute_name1='attribute_value1'][@attribute_name2='attribute_value2]
05 Menggunakan DAN
Sintaks
//[@attribute_name1='attribute_value1' dan @attribute_name2='attribute_value2]
atau
//*[@attribute_name1='attribute_value1' dan @attribute_name2='attribute_value2]
06 Menggunakan ATAU
Sintaks
//[@attribute_name1='attribute_value1' atau @attribute_name2='attribute_value2]
atau
//*[@attribute_name1='attribute_value1' atau @attribute_name2='attribute_value2]
07 Menggunakan mengandungi()
Mengandungi() ialah kaedah untuk mengenal pasti elemen yang berubah secara dinamik dan apabila biasa dengan beberapa bahagian nilai atribut elemen.
Apabila biasa dengan nilai atribut elemen (bermula dengan teks yang ditentukan), kita boleh menggunakan kaedah mula-dengan() untuk mengenal pastinya.
sintaks
//[mengandungi(@nama_atribut,'nilai_atribut')]
atau
//*[mengandungi(@attribute_name,'attribute_value')]
#08 penggunaan teks ()
Mekanisme ini digunakan untuk mencari elemen berdasarkan teks halaman web.
Last() memilih elemen terakhir (daripada jenis yang ditentukan) daripada semua elemen input.
Sintaks
//[text()='Pandangan baharu untuk log masuk akan datang tidak lama lagi']
atau
//[text()='Pandangan baharu untuk log masuk akan datang tidak lama lagi']
09 Menggunakan position(),
Elemen dipilih daripada semua elemen input berdasarkan nombor kedudukan yang disediakan.
Dalam XPath berikut, [@type=’text’] akan mencari medan teks dan fungsi [position()=2] akan mengenal pasti medan teks dalam kedudukan kedua dari atas.
Sintaks
findElement(By.xpath("(//input[@type='text'])[position()=2]"))
atau
findElement(By.xpath("(//input[@type='text'])[2]"))
10 Menggunakan indeks
Kita boleh sampai ke elemen ke-n dengan meletakkan kedudukan indeks dalam kurungan segi empat sama. Kemudian, kami dapat mengenal pasti medan Nama Akhir menggunakan XPath di bawah.
Sintaks
findElement(By.xpath("//label[2]"))
11 Menggunakan paksi XPath sebelumnya
Kecuali untuk nenek moyang, nod atribut dan nod ruang nama, ini memilih semua nod yang muncul sebelum nod semasa dalam dokumen.
Bagaimanakah Saya Memilih Elemen Web Daripada Senarai Dalam Selenium?
WebElement select = driver.findElement(By.id(“jantina”));
Pilihan senarai = select.findElements(By.tagName(“Lelaki”));
untuk (pilihan Elemen Web : pilihan) {
if(“Jerman”.equals(option.getText()))
option.click();
Bagaimana Selenium Mengendalikan Kotak Senarai?
menggunakan selectByValue()
Pilih kotak senarai = Pilih baharu(pemandu.
kotak senarai.
Pilih kotak senarai = baru Pilih(pemandu.
Pilihan WebElement = listbox.getFirstSelectedOption();
System.out.println(option.getText()); //mencetak pilihan yang dipilih.
//Menyenaraikan semua pilihan yang dipilih.
//Menyenaraikan semua pilihan.
Bagaimana Untuk Menulis Elemen Web Dinamik Dalam Selenium?
Elemen dinamik ialah Elemen Web yang IDnya dan bukan hanya ID, tetapi sebarang atribut seperti Nama Kelas, Nilai dan sebagainya, tidak tetap.
Oleh itu, setiap kali anda memuat semula halaman, ia berubah. Akibatnya, anda tidak boleh mengendalikan elemen itu semata-mata melalui pengesan.
Sebagai contoh, nama kelas elemen Peti Masuk Gmail berubah dengan setiap log masuk.
Elemen dinamik dipacu pangkalan data atau dipacu sesi Apabila anda menukar elemen pangkalan data, ia mempengaruhi beberapa kawasan aplikasi yang sedang diuji.
Elemen dinamik adalah benar-benar kandungan, dengan pemformatan dibentangkan dalam reka bentuk. Kotak teks dan butang biasanya digunakan dengan pengecam dinamik.
Apabila anda mengautomasikan tapak web dinamik, skrip akan pecah sebaik sahaja kandungan berubah, menyebabkan ujian anda gagal. Kemudian anda perlu mengemas kini kes ujian anda setiap kali, yang merupakan tugas yang memakan masa.
Kita mesti sentiasa memahami bagaimana elemen ini bertindak apabila halaman dimuat semula atau sesi baharu dimulakan. Kami boleh menyediakan strategi untuk berinteraksi dengan elemen ini setelah kami memahaminya.
#01 Xpath Relatif dengan Teks Permulaan
Sama seperti pemilih pautan separa dalam Selenium, kami boleh menggunakan carian Xpath dengan elemen padanan Teks permulaan.
#02 Relative Xpath dengan Nod Mengikuti atau Mendahului
Semua nod yang mengikuti nod konteks disenaraikan di bawah. Kita boleh menggunakan 'yang berikut' untuk menentukan elemen yang disenaraikan di bawah dalam senarai elemen web.
Teks #03 Mengandungi Xpath Relatif
Beberapa elemen dinamik mengandungi nilai statik; berdasarkan nilai tersebut; kita boleh mencari elemen tersebut menggunakan fungsi 'mengandungi'. Sebagai contoh, terdapat rentetan statik 'Hstpl-12345' dalam nama kelas butang HTML di atas. Sebagai contoh, kita boleh menggunakan XPath untuk mencari elemen butang dengan nama kelas yang mengandungi perkataan 'Hstpl.'
#04 Elemen Berindeks
Apabila terdapat berbilang elemen dalam DOM dengan atribut yang serupa, ia boleh menjadi mencabar untuk mencarinya, terutamanya apabila ia dinamik.
Sebagai contoh, katakan terdapat sepuluh butang pada halaman, dan anda ingin mencari yang kelima. Kemudian kami mencari elemen dengan teg ‘butang’ dan pergi ke indeks kelima senarai butang untuk mencari elemen tersebut.
#05 Kaedah Xpath Mutlak
Xpath Mutlak menggunakan keseluruhan laluan daripada Elemen Akar kepada elemen tertentu. Seperti yang ditunjukkan di bawah, Xpath mutlak bermula dengan HTML dan garis miring ke hadapan (/). Untuk menjana Xpaths, gunakan laluan api (firebug).
Walau bagaimanapun, mereka lebih cenderung kepada regresi kerana perubahan kecil dalam DOM menyebabkannya tidak betul atau merujuk kepada elemen lain.
Oleh itu, menggunakan Xpath mutlak tidak dianggap sebagai amalan terbaik dalam kebanyakan kes, tetapi ia menyelesaikan masalah elemen Dinamik.
#06 Antara Muka IWebElement sedang digunakan.
Kaedah lain untuk mengendalikan elemen dinamik ialah mencari semua elemen dengan nama Teg yang sama dan kemudian mencari elemen yang diperlukan berdasarkan sama ada ia mengandungi teks, nilai atau atribut elemen.
Kesimpulan
Artikel ini menunjukkan cara menggunakan fungsi XPath mengandungi(), bermula-dengan(), dan teks() dengan atribut dan teks untuk mengenal pasti elemen secara unik dalam struktur DOM HTML.
Dalam Selenium, XPath digunakan untuk mencari elemen apabila pencari lain gagal. Terdapat dua jenis Selenium XPath: Absolute XPath dan Relative XPath.
Sumber: Artikel ini pada asalnya diterbitkan di testgrid.io.
Atas ialah kandungan terperinci Cara Menulis dan Mengendalikan XPath Dinamik Dalam Selenium [dengan Taktik]. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.
