Dalam automasi Selenium, jika elemen tidak dijumpai oleh pencari umum seperti id, kelas, nama, dan lain-lain maka XPath digunakan untuk mencari elemen di laman web.
Dalam tutorial ini, kita akan belajar mengenai xpath dan ekspresi XPath yang berbeza untuk mencari elemen kompleks atau dinamik, yang atributnya berubah secara dinamik semasa memuat semula atau operasi apa pun.
Dalam tutorial XPath ini, anda akan belajar-
- Apa itu XPath?
- Jenis X-path
- XPath mutlak
- XPath relatif
- XPath asas
- Mengandungi ()
- Menggunakan ATAU & DAN
- Bermula-dengan fungsi
- Teks ()
- Kaedah paksi XPath
- Mengikuti
- Leluhur
- Anak
- Terdahulu
- Mengikuti-saudara
- Ibu bapa
- Diri
- Keturunan
Apa itu XPath di Selenium?
XPath di Selenium adalah jalur XML yang digunakan untuk navigasi melalui struktur HTML halaman. Ini adalah sintaks atau bahasa untuk mencari unsur apa pun di laman web menggunakan ekspresi jalur XML. XPath dapat digunakan untuk kedua-dua dokumen HTML dan XML untuk mencari lokasi elemen apa pun di halaman web menggunakan struktur DOM HTML.
Format asas XPath dalam selenium dijelaskan di bawah dengan tangkapan skrin.
Format Asas XPath
Sintaks untuk XPath selenium:
XPath mengandungi jalan elemen yang terdapat di laman web. Sintaks XPath standard untuk membuat XPath adalah.
Xpath = // tagname [@ atribut = 'nilai']
- //: Pilih nod semasa.
- Tagname: Tagname nod tertentu.
- @: Pilih atribut.
- Atribut: Nama atribut nod.
- Nilai: Nilai atribut.
Untuk mencari elemen di laman web dengan tepat terdapat pelbagai jenis pencari:
Pengesan XPath | Cari elemen yang berbeza di laman web |
ID | Untuk mencari elemen dengan ID elemen |
Nama kelas | Untuk mencari elemen mengikut Nama Kelas elemen |
Nama | Untuk mencari unsur dengan nama elemen |
Teks pautan | Untuk mencari elemen mengikut teks pautan |
XPath | XPath diperlukan untuk mencari elemen dinamik dan melintasi antara pelbagai elemen laman web |
Laluan CSS | Laluan CSS juga mencari elemen yang tidak mempunyai nama, kelas atau ID. |
Jenis X-path
Terdapat dua jenis XPath:
1) XPath mutlak
2) XPath relatif
XPath mutlak:
Ini adalah cara langsung untuk mencari elemen tersebut, tetapi kelemahan XPath mutlak adalah jika terdapat perubahan yang dilakukan pada jalur elemen tersebut maka XPath tersebut akan gagal.
Ciri utama XPath adalah ia bermula dengan garis miring tunggal (/), yang bermaksud anda boleh memilih elemen dari simpul akar.
Di bawah adalah contoh ungkapan xpath mutlak elemen yang ditunjukkan di skrin di bawah.
CATATAN: Anda boleh melakukan latihan XPath berikut di http://demo.guru99.com/test/selenium-xpath.html ini
Klik di sini jika video tidak dapat diakses
XPath mutlak:
/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / b [1]
XPath mutlak
Xpath relatif:
Xpath relatif bermula dari tengah struktur HTML DOM. Ia dimulakan dengan garis miring berganda (//). Ia boleh mencari elemen di mana sahaja di laman web, tidak perlu menulis xpath panjang dan anda boleh bermula dari tengah struktur HTML DOM. Relatif Xpath selalu disukai kerana ia bukan jalan lengkap dari elemen akar.
Di bawah ini adalah contoh ungkapan XPath relatif elemen yang sama yang ditunjukkan pada skrin di bawah. Ini adalah format biasa yang digunakan untuk mencari elemen oleh XPath.
Klik di sini jika video tidak dapat diakses
XPath relatif: // div [@ class = 'Featured-box cloumnsize1'] // h4 [1] // b [1]
XPath relatif
Apakah paksi XPath.
Paksi XPath mencari nod yang berlainan dalam dokumen XML dari nod konteks semasa. XPath Axes adalah kaedah yang digunakan untuk mencari elemen dinamik, yang sebaliknya tidak mungkin dilakukan dengan kaedah XPath biasa tanpa ID, Nama Kelas, Nama, dll.
Kaedah sumbu digunakan untuk mencari unsur-unsur tersebut, yang berubah secara dinamik semasa memuat semula atau operasi lain. Terdapat beberapa kaedah sumbu yang biasa digunakan dalam Pemacu Web Selenium seperti anak, ibu bapa, nenek moyang, saudara kandung, pendahulu, diri, dll.
Menggunakan elemen kompleks & Dinamik XPath Handling di Selenium
1) XPath asas:
Ekspresi XPath memilih node atau senarai node berdasarkan atribut seperti ID, Name, Classname , dll dari dokumen XML seperti yang digambarkan di bawah.
Xpath = // input [@ name = 'uid']
Berikut adalah pautan untuk mengakses halaman http://demo.guru99.com/test/selenium-xpath.html
XPath asas
Beberapa ungkapan xpath yang lebih asas:
Xpath = // input [@ type = 'text']Xpath = // label [@ id = 'message23']Xpath = // input [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Mengandungi ():
Mengandung () adalah kaedah yang digunakan dalam ekspresi XPath. Ia digunakan apabila nilai atribut berubah secara dinamik, misalnya, maklumat log masuk.
Ciri berisi memiliki kemampuan untuk mencari elemen dengan teks separa seperti yang ditunjukkan dalam contoh XPath di bawah.
Dalam contoh ini, kami cuba mengenal pasti elemen dengan hanya menggunakan nilai teks separa atribut. Dalam ekspresi XPath di bawah, nilai separa 'sub' digunakan sebagai ganti butang hantar. Dapat diperhatikan bahawa unsur tersebut berjaya dijumpai.
Nilai lengkap 'Jenis' adalah 'hantar' tetapi hanya menggunakan sebahagian nilai 'sub'.
Xpath = // * [mengandungi (@ type, 'sub')]
Nilai lengkap 'name' adalah 'btnLogin' tetapi hanya menggunakan sebahagian nilai 'btn'.
Xpath = // * [mengandungi (@ nama, 'btn')]
Dalam ungkapan di atas, kami telah mengambil 'name' sebagai atribut dan 'btn' sebagai nilai separa seperti yang ditunjukkan dalam tangkapan skrin di bawah. Ini akan menemui 2 elemen (MASUK & RESET) kerana atribut 'name' mereka bermula dengan 'btn'.
Begitu juga, dalam ungkapan di bawah ini, kita telah mengambil 'id' sebagai atribut dan 'message' sebagai nilai separa. Ini akan menemui 2 elemen ('User-ID mestilah tidak kosong' & 'Password tidak boleh kosong') kerana atribut 'name' dimulakan dengan 'message'.
Xpath = // * [mengandungi (@ id, 'message')]
Dalam ungkapan di bawah, kami telah mengambil "teks" pautan sebagai atribut dan 'di sini' sebagai nilai separa seperti yang ditunjukkan dalam tangkapan skrin di bawah. Ini akan menemui pautan ('di sini') kerana ia memaparkan teks 'di sini'.
Xpath = // * [mengandungi (teks (), 'di sini')]Xpath = // * [mengandungi (@ href, 'guru99.com')]
3) Menggunakan ATAU & DAN:
Dalam ungkapan ATAU, dua keadaan digunakan, sama ada syarat pertama atau keadaan kedua harus benar. Ini juga berlaku jika ada satu syarat yang benar atau mungkin kedua-duanya Bermakna mana-mana satu syarat mesti berlaku untuk mencari elemen tersebut.
Dalam ungkapan XPath di bawah, ia mengenal pasti unsur-unsur yang keadaannya tunggal atau kedua-duanya benar.
Xpath = // * [@ type = 'submit' atau @ name = 'btnReset']
Menonjolkan kedua-dua elemen tersebut sebagai elemen "MASUK" yang mempunyai atribut 'type' dan "RESET" elemen yang mempunyai atribut 'name'.
Dalam ekspresi AND, dua keadaan digunakan, kedua-dua keadaan harus benar untuk mencari elemen. Ia gagal menemui unsur sekiranya ada satu syarat yang salah.
Xpath = // input [@ type = 'submit' dan @ name = 'btnLogin']
Dalam ungkapan di bawah, menonjolkan elemen 'MASUK' kerana ia mempunyai kedua-dua atribut 'type' dan 'name'.
4) Xpath Bermula-dengan
XPath bermula-dengan () adalah fungsi yang digunakan untuk mencari elemen web yang nilai atributnya berubah pada penyegaran atau oleh operasi dinamik lain di halaman web. Dalam kaedah ini, teks permulaan atribut dipadankan untuk mencari elemen yang nilai atributnya berubah secara dinamik. Anda juga dapat mencari elemen yang nilai atributnya statik (bukan perubahan).
Contohnya -: Andaikan ID elemen tertentu berubah secara dinamik seperti:
Id = "mesej12"
Id = "mesej345"
Id = "mesej8769"
dan seterusnya ... tetapi teks awalnya sama. Dalam kes ini, kita menggunakan ungkapan Start-with.
Dalam ungkapan di bawah ini, terdapat dua elemen dengan id yang memulakan "message" (iaitu, 'User-ID mestilah tidak kosong' & 'Password tidak boleh kosong'). Dalam contoh di bawah, XPath menemui elemen yang 'ID' dimulakan dengan 'message'.
Xpath = // label [dimulakan dengan (@ id, 'message')]
5) Fungsi Teks XPath ()
Fungsi XPath text () adalah fungsi built-in selenium webdriver yang digunakan untuk mencari elemen berdasarkan teks elemen web. Ia membantu mencari elemen teks yang tepat dan ia meletakkan unsur-unsur dalam set simpul teks. Unsur-unsur yang hendak diletak hendaklah dalam bentuk rentetan.
Dalam ungkapan ini, dengan fungsi teks, kita dapati elemen dengan padanan teks yang tepat seperti yang ditunjukkan di bawah. Dalam kes kami, kami dapati elemen dengan teks "UserID".
Xpath = // td [text () = 'UserID']
6) Kaedah paksi XPath:
Kaedah paksi XPath ini digunakan untuk mencari elemen kompleks atau dinamik. Di bawah ini kita akan melihat beberapa kaedah ini.
Untuk menggambarkan kaedah sumbu XPath ini, kami akan menggunakan laman web demo bank Guru99.
a) Mengikuti:
Memilih semua elemen dalam dokumen nod semasa () [Kotak input UserID adalah node semasa] seperti yang ditunjukkan pada skrin di bawah.
Xpath = // * [@ type = 'text'] // berikut :: input
Terdapat 3 node "input" yang sepadan dengan menggunakan kata kunci paksi "ikut", log masuk dan tetapkan semula Sekiranya anda ingin memberi tumpuan kepada elemen tertentu maka anda boleh menggunakan kaedah XPath di bawah:
Xpath = // * [@ type = 'text'] // berikut :: input [1]
Anda boleh menukar XPath mengikut keperluan dengan meletakkan [1], [2]
… dan sebagainya.Dengan input sebagai '1', tangkapan skrin di bawah menemui simpul tertentu iaitu elemen kotak input 'Kata Laluan'.
b) Leluhur:
Paksi nenek moyang memilih semua elemen nenek moyang (datuk nenek, ibu bapa, dll.) Nod semasa seperti yang ditunjukkan dalam skrin di bawah.
Dalam ungkapan di bawah ini, kami menjumpai unsur nenek moyang dari node semasa (simpul "ENTERPRISE TESTING").
Xpath = // * [text () = 'Enterprise Testing'] // leluhur :: div
Terdapat 13 nod "div" yang sepadan dengan menggunakan paksi "leluhur". Sekiranya anda ingin memberi tumpuan kepada elemen tertentu maka anda boleh menggunakan XPath di bawah ini, di mana anda menukar nombor 1, 2 mengikut keperluan anda:
Xpath = // * [text () = 'Enterprise Testing'] // leluhur :: div [1]
Anda boleh menukar XPath mengikut keperluan dengan meletakkan [1], [2]
… dan sebagainya.c) Anak:
Memilih semua elemen anak dari node semasa (Java) seperti yang ditunjukkan pada skrin di bawah.
Xpath = // * [@ id = 'java_technologies'] // anak :: li
Terdapat 71 nod "li" yang dipadankan dengan menggunakan paksi "anak". Sekiranya anda ingin memberi tumpuan kepada elemen tertentu maka anda boleh menggunakan xpath di bawah:
Xpath = // * [@ id = 'java_technologies'] // anak :: li [1]
Anda boleh menukar xpath mengikut keperluan dengan meletakkan [1], [2]
… dan sebagainya.d) Terdahulu:
Pilih semua nod yang datang sebelum node semasa seperti yang ditunjukkan pada skrin di bawah.
Dalam ungkapan di bawah, ia mengenal pasti semua elemen input sebelum butang "MASUK" iaitu elemen input Userid dan kata laluan .
Xpath = // * [@ type = 'submit'] // sebelum :: input
Terdapat 2 node "input" yang sepadan dengan menggunakan paksi "sebelumnya". Sekiranya anda ingin memberi tumpuan kepada elemen tertentu maka anda boleh menggunakan XPath di bawah:
Xpath = // * [@ type = 'submit'] // sebelumnya :: input [1]
Anda boleh menukar xpath mengikut keperluan dengan meletakkan [1], [2]
… dan sebagainya.e) Mengikut-saudara:
Pilih adik-beradik berikut dari nod konteks. Adik beradik berada pada tahap yang sama dengan nod semasa seperti yang ditunjukkan pada skrin di bawah. Ia akan menemui elemen selepas nod semasa.
xpath = // * [@ type = 'submit'] // follow-sibling :: input
Satu node input sepadan dengan menggunakan paksi "follow-saudara".
f) Ibu bapa:
Memilih induk node semasa seperti yang ditunjukkan pada skrin di bawah.
Xpath = // * [@ id = 'rt-feature'] // induk :: div
Terdapat 65 nod "div" yang sepadan dengan menggunakan paksi "induk". Sekiranya anda ingin memberi tumpuan kepada elemen tertentu maka anda boleh menggunakan XPath di bawah:
Xpath = // * [@ id = 'rt-feature'] // induk :: div [1]
Anda boleh menukar XPath mengikut keperluan dengan meletakkan [1], [2]
… dan sebagainya.g) Diri:
Memilih nod semasa atau 'diri' bermaksud ia menunjukkan simpul itu sendiri seperti yang ditunjukkan pada skrin di bawah.
Pencocokan satu nod dengan menggunakan paksi "diri". Selalu hanya terdapat satu simpul kerana ia mewakili elemen diri.
Xpath = // * [@ type = 'password'] // self :: input
h) Keturunan:
Memilih keturunan nod semasa seperti yang ditunjukkan pada skrin di bawah.Dalam ungkapan di bawah, ia mengenal pasti semua elemen keturunan ke elemen semasa (elemen bingkai 'Main body surround') yang bermaksud turun di bawah nod (simpul anak, simpul cucu, dll.).
Xpath = // * [@ id = 'rt-feature'] // keturunan :: a
Terdapat 12 simpul "pautan" yang sepadan dengan menggunakan paksi "keturunan". Sekiranya anda ingin memberi tumpuan kepada elemen tertentu maka anda boleh menggunakan XPath di bawah:
Xpath = // * [@ id = 'rt-feature'] // keturunan :: a [1]
Anda boleh menukar XPath mengikut keperluan dengan meletakkan [1], [2]
… dan sebagainya.Ringkasan:
XPath diperlukan untuk mencari elemen di laman web untuk melakukan operasi pada elemen tersebut.
- Terdapat dua jenis selenium XPath:
- XPath mutlak
- XPath relatif
- XPath Axes adalah kaedah yang digunakan untuk mencari elemen dinamik, yang sebaliknya tidak mungkin dicari dengan kaedah XPath biasa
- Ekspresi XPath memilih node atau senarai node berdasarkan atribut seperti ID, Name, Classname, dll dari dokumen XML.