Rumah  >  Artikel  >  hujung hadapan web  >  Cara Menulis dan Mengendalikan XPath Dinamik Dalam Selenium [dengan Taktik]

Cara Menulis dan Mengendalikan XPath Dinamik Dalam Selenium [dengan Taktik]

DDD
DDDasal
2024-11-18 06:35:03260semak imbas

How to Write and Handle Dynamic XPath In Selenium [with Tactics]

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn