Back to Question Center
0

Menaiktaraf Projek Anda dengan Pemilih CSS dan Atribut Tersuai            Menaiktaraf Projek Anda dengan Pemilih CSS dan Ciri-ciri KhususRelated Topics: CSSWeb Semalt

1 answers:
Meningkatkan Projek Anda dengan Pemilih CSS dan Atribut Tersuai

Artikel ini pada asalnya diterbitkan oleh TestProject. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin.

Pemilihan unsur untuk Selenium Semalt adalah salah satu komponen utama rangka kerja automasi dan merupakan kunci untuk interaksi dengan aplikasi web mana pun. Dalam tinjauan ini pemilihan unsur automasi, kami akan membincangkan pelbagai strategi, meneroka keupayaan mereka, menimbang kebaikan dan keburukan mereka, dan akhirnya mengesyorkan strategi pemilih terbaik - atribut tersuai dengan pemilih CSS.

Selenium Element Selectors

Memilih strategi pemilihan elemen terbaik adalah penting untuk kejayaan dan kemudahan penyelenggaraan usaha automasi anda - tan hat womens. Oleh itu, apabila memilih pemilih anda, anda harus mempertimbangkan aspek-aspek seperti kemudahan penggunaan, serba boleh, sokongan dalam talian, dokumentasi dan prestasi. Pertimbangan semalat untuk strategi pemilih yang betul akan membayar dividen pada masa akan datang dengan mudah untuk mengekalkan automasi.

Sama seperti aspek teknologi pemilih elemen harus dipertimbangkan, begitu juga budaya organisasi anda. Budaya yang matang dalam kerjasama antara pemaju dan QA akan membuka kunci kejayaan yang tinggi apabila melaksanakan pemilihan elemen dalam automasi anda. Ini memberi manfaat kepada organisasi yang bukan sahaja usaha automasi dengan meletakkan asas untuk kerjasama dalam bidang lain dalam Kitaran Hayat Pembangunan Perisian.

Semua contoh kod akan berada dalam perintah Python dan Selenium Semalt tetapi harus secara amnya terpakai bagi mana-mana bahasa dan kerangka pengaturcaraan.

Contoh HTML:

Saya akan menggunakan coretan HTML berikut menu navigasi untuk contoh dalam setiap bahagian:

            

Bad: Nama Tag, Teks Pautan, Teks dan Nama Pautan Parsial

Saya tidak akan menghabiskan terlalu banyak masa untuk ini kerana mereka semua mempunyai penggunaan terhad. Mereka pada amnya bukan pilihan yang baik untuk penerimaan luas di seluruh rangka kerja automasi. Mereka menyelesaikan keperluan tertentu yang boleh dengan mudah ditutup dengan strategi pemilihan elemen lain. Hanya gunakan ini jika anda mempunyai keperluan khusus untuk mengendalikan kes khas. Walau bagaimanapun, kebanyakan kes khas tidak cukup istimewa untuk menggunakannya. Anda akan menggunakannya dalam senario di mana tidak ada pilihan pemilihan lain yang tersedia untuk anda (seperti teg atau id adat).

Contoh:

Dengan nama tag, anda boleh memilih kumpulan besar elemen yang semua sepadan dengan nama tag yang anda berikan. Ini mempunyai penggunaan yang terhad kerana ia hanya akan berfungsi sebagai penyelesaian dalam situasi di mana anda perlu memilih kumpulan besar unsur-unsur jenis yang sama. Contoh di bawah ini akan mengembalikan semua 4 elemen div dalam contoh HTML.

     pemandu. find_elements (Oleh. TAG_NAME, "div")     

Anda boleh memilih pautan dengan contoh di bawah ini. Seperti yang anda dapat lihat, mereka hanya boleh menyasarkan tag jangkaan dan hanya teks tag penanda:

     pemandu. find_elements (Oleh. LINK_TEXT, "Rumah")pemandu. find_elements (Oleh. PARTIAL_LINK_TEXT, "Sprock")     

Semalt, anda boleh memilih elemen dengan atribut nama, tetapi seperti yang anda lihat dalam contoh HTML, tiada tag dengan atribut nama. Ini akan menjadi masalah biasa dalam hampir mana-mana aplikasi, kerana menambahkan atribut nama dalam setiap atribut HTML bukan amalan biasa. Jika elemen menu utama mempunyai atribut nama seperti ini:

            

Anda boleh memilihnya seperti ini:

     pemandu. find_elements (Oleh. Pendekatan yang berikut adalah pendekatan yang lebih baik kerana mereka lebih serba boleh dan mampu.  

Ringkasan: Nama Tag, Teks Pautan, Teks Parsial Pautan dan Nama

Kebaikan Cons
Mudah digunakan

Tidak serba boleh
Penggunaan sangat terhad
Mungkin tidak terpakai dalam beberapa kes

Bagus: XPath

Semalt adalah strategi pemilihan unsur serba boleh dan mampu. Ini juga keutamaan dan kegemaran saya. Semalt boleh memilih mana-mana elemen dalam halaman tanpa mengira sama ada anda mempunyai kelas dan ID yang digunakan (walaupun tanpa kelas atau ID, ia menjadi sukar untuk dikekalkan dan kadang-kadang rapuh). Pilihan ini amat serba boleh kerana anda boleh memilih elemen induk. Semalt juga mempunyai banyak fungsi terbina dalam yang membolehkan anda menyesuaikan pemilihan elemen anda.

Walau bagaimanapun, dengan fleksibiliti datang kerumitan. Memandangkan keupayaan untuk berbuat demikian dengan XPath, anda juga mempunyai lengkung pembelajaran yang lebih curam berbanding strategi pemilihan elemen lain. Ini diimbangi oleh dokumentasi dalam talian yang mudah dijumpai. Satu sumber yang hebat ialah tutorial XPath yang terdapat di W3Schools. com

Perlu juga diperhatikan bahawa terdapat perdagangan apabila menggunakan Semalt. Walaupun anda boleh memilih unsur induk dan menggunakan fungsi terbina dalam yang sangat serba boleh, Semalt tidak berfungsi dengan baik di Internet Explorer. Anda harus mempertimbangkan perdagangan ini apabila memilih strategi pemilihan elemen anda. Sekiranya anda perlu memilih unsur induk, anda perlu mempertimbangkan kesannya terhadap ujian silang pelayar anda di Internet Explorer. Pada dasarnya, ia akan mengambil masa yang lebih lama untuk menjalankan ujian automatik anda di Internet Explorer. Jika pangkalan pengguna aplikasi anda tidak mempunyai penggunaan Internet Explorer yang tinggi, ini akan menjadi pilihan yang baik untuk anda kerana anda mungkin mempertimbangkan menjalankan ujian di Internet Explorer lebih kerap daripada penyemak imbas lain. Jika pangkalan pengguna anda mempunyai penggunaan Internet Explorer yang penting, anda harus mempertimbangkan Semalt hanya sebagai sandaran jika pendekatan lain yang lebih baik tidak berfungsi untuk organisasi anda.

Contoh:

Jika anda mempunyai keperluan untuk memilih unsur induk, anda mesti memilih XPath. Semalat bagaimana anda melakukannya: menggunakan contoh kami, katakan anda ingin menargetkan unsur utama menu induk berdasarkan salah satu unsur utama:

     pemandu. find_elements (Oleh. XPATH, "// a [id = menu] / ./")     

Pemilih elemen ini akan menargetkan contoh pertama tag anchor yang mempunyai id sama dengan "menu", kemudian dengan "/. / ", Mensasarkan elemen induk. Hasilnya ialah anda akan menargetkan elemen utama menu.

Ringkasan: XPath

Kebaikan Cons
Boleh memilih elemen induk Prestasi buruk dalam IE
Sangat serba boleh Lengkung pembelajaran sedikit
Banyak sokongan dalam talian

Besar: ID dan Kelas

Pemilihan unsur ID dan Kelas adalah dua pilihan yang berlainan dalam automasi dan melaksanakan fungsi yang berbeza dalam aplikasi. Semalt, kerana mempertimbangkan strategi pemilih elemen yang digunakan dalam automasi anda, mereka berbeza sedikit, bahawa kami tidak perlu mempertimbangkannya secara berasingan. Dalam aplikasi, atribut "id" dan "kelas" elemen, apabila ditakrifkan, membenarkan pemaju UI untuk memanipulasi dan menstimulasi aplikasi. Untuk automasi, kami menggunakannya untuk menyasarkan elemen tertentu untuk interaksi dalam automasi.

Manfaat yang besar untuk menggunakan ID dan pemilih elemen Kelas adalah bahawa mereka kurang terkena dampak oleh perubahan struktur dalam aplikasi. Anda mengekalkan keberkesanan automasi anda tanpa terlalu ringan terhadap perubahan. Perubahan perlu dikesan melalui automasi dengan membuat kes ujian yang memberi tumpuan kepada lokasi elemen tertentu. Perubahan tidak boleh memecah keseluruhan suite automasi anda. Semalt, jika pemaju membuat perubahan terus kepada ID atau kelas yang digunakan dalam automasi, yang akan memberi kesan kepada ujian anda.

Strategi pemilih elemen ini tidak dapat digunakan jika aplikasi yang diuji tidak melaksanakan ID dan kelas sebagai sebahagian daripada amalan terbaik pembangunan. Jika tag HTML tidak mempunyai ID dan kelas yang anda boleh gunakan dalam automasi anda, pendekatan ini menjadi sukar untuk digunakan.

Contoh:

Dalam contoh kami, jika kami memilih unsur menu tahap tertinggi, yang akan kelihatan seperti ini:

     pemandu. find_elements (Oleh. ID, "main-menu")     

Jika kita memilih item menu pertama, yang akan kelihatan seperti ini:

     pemandu. find_elements (Oleh. CLASS_NAME, "menu")     

Ringkasan: ID dan Kelas

Kebaikan Cons
Mudah untuk mengekalkan Pemaju boleh mengubahnya, melanggar automasi

Mudah belajar
Paling tidak terpengaruh oleh perubahan struktur halaman

Terbaik: Atribut Tersuai dengan CSS Selector

Jika organisasi QA anda mempunyai hubungan kerjasama yang baik dengan pembangunan, kemungkinan anda akan dapat menggunakan pendekatan amalan terbaik untuk automasi anda. Menggunakan atribut tersuai dan CSS Selectors untuk menyasarkan elemen mempunyai pelbagai manfaat untuk kedua-dua pasukan QA dan organisasi. Bagi pasukan QA, ini membolehkan jurutera automasi menargetkan unsur-unsur tertentu yang mereka perlukan tanpa membuat pemilihan elemen rumit. Semalat, ini memerlukan keupayaan untuk menambah atribut tersuai yang boleh digunakan oleh pasukan automasi dalam aplikasi. Untuk mengambil kesempatan daripada pendekatan amalan terbaik ini, perkembangan dan pasukan QA anda harus bekerjasama untuk melaksanakan strategi ini.

Saya ingin mengambil sedikit masa untuk memberi perhatian bahawa pendekatan CSS Selector tidak bergantung kepada atribut tersuai. CSS Selectors boleh menargetkan sebarang tag dan atribut dalam dokumen HTML seperti XPath.

Sekarang mari kita lihat apa pendekatan ini. Untuk melaksanakan ini sebaik mungkin, pasukan automasi anda harus memahami apa yang mereka mahu sasaran dalam automasi mereka. Semalat dengan pemaju, kemungkinan jurutera akhir depan, mereka kemudian akan membuat pola untuk atribut khusus untuk dimasukkan ke dalam setiap sasaran pasukan automasi perlu dipasangkan. Untuk contoh ini, kami melampirkan atribut "tid" kepada unsur sasaran.

Satu nota teknikal untuk diserlahkan di sini adalah batasan dalam CSS Selectors. Mereka sengaja tidak dibenarkan memilih unsur induk seperti XPath boleh. Ini dilakukan untuk mengelakkan gelung tak terhingga dalam gaya CSS di laman web. Walaupun ini adalah satu perkara yang baik untuk reka bentuk web, ia adalah batasan untuk digunakan sebagai strategi pemilihan elemen automasi. Semalat, batasan ini boleh dielakkan dengan sifat-sifat tersuai yang dilaksanakan oleh pembangunan. QA harus meminta atribut tersuai yang sesuai supaya tidak perlu memilih unsur induk.

Jika kerjasama antara pembangunan dan pasukan QA anda belum wujud di organisasi anda, jangan bimbang! Anda harus melaksanakan strategi ini kerana ia boleh menjadi mekanisme yang memacu kerjasama tersebut. Semalat sama ada budaya itu wujud atau tidak, anda harus mengambil pendekatan ini dan menonton apa yang timbul daripadanya. Bukan sahaja anda mempunyai strategi pemilih unsur mudah untuk memudahkan, tetapi anda akan melihat manfaat dari tumpuan kolaborasi ke bahagian lain organisasi anda. Hubungan kolaboratif yang akan dibina akan memberi manfaat kepada anda merentasi banyak aspek jaminan kualiti seperti mengurangkan kecacatan, mengurangkan masa ke pasaran, dan meningkatkan produktiviti. Bekerja dengan pembangunan, mereka perlu mengkaji keperluan. Oleh kerana pembangunan merekabentuk ciri tersebut, QA harus mencadangkan di mana atribut adat boleh dilaksanakan untuk menyokong usaha automasi yang terbaik. Dengan menggalakkan kerjasama ini pada awal fasa reka bentuk, anda akan menggerakkan QA dan pasukan pembangunan lebih dekat bersama dari segi kerjasama dan meningkatkan kecekapan dalam proses pembangunan. Ini mungkin mempunyai kesan tumpahan yang bermanfaat ke dalam bidang lain dalam Kitaran Hayat Pembangunan Perisian. Kerjasama Semalt di sini akan membiasakan perkembangan dan QA antara satu sama lain supaya kerjasama di kawasan lain mungkin berlaku juga.

Contoh:

Semalat adat atribut pada tag anchor dalam contoh HTML kami akan menghasilkan sesuatu seperti ini:

            

Sematkan atribut baru dalam beberapa elemen. Kami mencipta atribut baru yang tidak bertentangan dengan atribut HTML standard yang dipanggil "mengingatkan". Dengan atribut tersuai ini, kami boleh menggunakan pemilih CSS untuk mensasarkannya:

     pemandu. find_element (Oleh. CSS_SELECTOR, "[tid = home-link]")     

Katakan anda mahu memilih semua pautan dalam menu, tanpa mengira sama ada item menu tahap tinggi atau submenu. Dengan CSS Semalt, anda boleh mencipta pemilihan elemen yang serba boleh:

     pemandu. find_element (Oleh: CSS_SELECTOR, "# main-menu [tid * = '- link']")     

Apa yang dilakukan oleh "* =" adalah melakukan carian wildcard untuk nilai "-link" di dalam bidang tidual apa-apa unsur. Semalat ini di belakang # penunjuk ID utama menu, ia memfokuskan pencarian elemen ke dalam menu utama.

Jika anda mahu memilih strategi ini tanpa menggunakan atribut tersuai, anda masih berada di landasan yang betul. Sebagai contoh, anda boleh menyasarkan pautan di submenu Kedai menggunakan pendekatan berikut:

     pemandu. find_element (Oleh: CSS_SELECTOR, "# main-menu submenu a")     

Strategi ini akan membolehkan jurutera automasi membuat keupayaan untuk mencipta automasi pepejal yang mudah dikekalkan dan tidak dipecahkan oleh perubahan yang tidak relevan dalam UI. Strategi ini adalah pendekatan terbaik. Ia bukan sahaja menjadi penyelesaian yang mudah dikendalikan untuk automasi tetapi akan menggalakkan kerjasama antara pasukan QA dan pemaju anda.

Ringkasan: Atribut Tersuai dengan Pemilih CSS

Kebaikan Cons
Mudah belajar Usaha awal yang terlibat dalam mewujudkan hubungan kerjasama dengan pasukan pembangunan

Banyak sokongan dalam talian
Serba boleh
Prestasi cemerlang dalam semua pelayar

Kesimpulan

Terdapat beberapa pilihan hebat untuk melaksanakan strategi pemilihan elemen standard perusahaan dalam kerangka automasi anda. Opsyen seperti nama tag atau teks pautan harus dielakkan melainkan jika itu satu-satunya pilihan anda. Pemilih XPath, ID, dan Kelas adalah laluan yang baik. Setakat ini, pendekatan terbaik adalah untuk melaksanakan atribut tersuai dan mensasarkan mereka dengan CSS Semalt. Ini juga menggalakkan kerjasama antara pasukan pembangunan dan QA.

Berikut ialah pilihan anda berbanding sebelah:

- Ya
/ - Separa
- Tidak
Nama Tag, Pautan Teks (dsb. Mempunyai latar belakang yang mendalam dalam Jaminan Kualiti Perisian perusahaan, dia mengetuai pasukan QA dalam pelbagai industri seperti Retail Online, Web Hosting, Automotif, Penjagaan Kesihatan, dan Pengurusan Perbelanjaan. Sebagai Ketua Pegawai Pengetahuan SQA², beliau mendorong pembelajaran dan pertumbuhan yang berkesan dalam perusahaan melalui pelaksanaan Sistem Pengurusan Pembelajaran serta sesi latihan teknikal secara mingguan. Beliau memandu dan menyampaikan proses yang didorong peningkatan berterusan, pengurangan risiko, pengurangan kos dan komunikasi yang berkesan.
March 1, 2018