Rumah >pembangunan bahagian belakang >C++ >Bandingkan HTML dalam Playwright .NET
Mengautomasikan teks semakan (dan HTMLnya) boleh menjadi satu cabaran jika anda tidak selesa dengan bahasa dan rangka kerja yang anda gunakan. Mempunyai masa yang terhad untuk belajar dan meneroka adalah cabaran tersendiri. Salah satu tugas saya untuk mengautomasikan ujian asap untuk projek kami adalah untuk mengesahkan teks dalam setiap persekitaran, dengan setiap persediaan khusus mempunyai mesej alu-aluannya sendiri. Dan, saya akui, saya tidak pasti di mana untuk bermula. Saya tahu apa yang saya perlukan, dan mengetahui di mana untuk mendapatkannya. Tetapi menyatukan semua bahagian tidak semudah yang dilihat.
Saya bermula dengan keperluan untuk mendapatkan akses pangkalan data. Dan kemudian bekerja dengan persediaan kami untuk memastikan bahawa saya boleh menggunakan tetapan aplikasi (yang memberitahu rangka kerja tempat untuk mencari maklumat dan berfungsi dengan tetapan konfigurasi untuk memastikan maklumat peribadi) untuk berhubung dengan pangkalan data semasa larian. Saya kemudiannya boleh menyusun kepingan, dan mendapatkan maklumat daripada pangkalan data, dan membandingkannya dengan maklumat yang dipaparkan untuk ujian.
Secara manual, ia mudah - saya sepatutnya meneka bahawa ini bermakna ia tidak akan semudah yang saya harapkan. Melihat HTML dan mengesahkan bahawa perkara berada dalam susun atur yang betul adalah mudah. Saya cukup faham tentang reka letak HTML yang mudah bahawa ini adalah semakan pantas untuk memastikan bahawa perkataan itu betul dan diteruskan. Saya telah membuat ujian asap ini dengan banyak jeda untuk pengesahan manual atas sebab tertentu. Di antara ini dan senarai perkara yang perlu saya periksa, saya akan digalakkan untuk belajar, meneroka dan meminta bantuan untuk menjayakan automasi ini dan menerapkannya dalam ujian lain.
Setelah akses pangkalan data (dan rentetan sambungan yang betul!) dibuat, saya dapat menetapkan teks halaman sebagai pembolehubah. Ini adalah bahagian yang mudah: Saya tahu apa yang saya lakukan di sini dan berasa berjaya dalam menyelesaikannya. Saya menjalankan ujian Playwright, dengan Jangkakan bahawa teks pada halaman akan sepadan dengan perkataan, tetapi bukan komponen HTML. Dan saya betul - perkataan yang betul ada, tetapi ujian gagal dengan HTML ditambahkan.
Masa penyelidikan! Percubaan pertama adalah dengan menggunakan Page.ContentAsync(), iaitu arahan untuk mendapatkan HTML penuh halaman, termasuk pengepala. Ini sepatutnya membolehkan saya mencarinya, dan mencari sub-rentetan teks, betul? Sebagai idea pertama, ia tidak terlalu mengerikan - saya mempunyai HTML yang saya cari disimpan, dan apa yang perlu saya lakukan ialah menelusuri keseluruhan kandungan dokumen untuk mencarinya. Tidak cekap, dan sudah tentu bukan amalan yang baik! Ia sepatutnya memberikan saya hasil yang saya perlukan dan kemudiannya boleh diulang.
Tidak. Mencari sub-rentetan dalam seluruh halaman tidak dapat dilakukan dengan cepat, dan saya mahu automasi saya menjadi pantas. Selepas beberapa dozen percubaan untuk memastikan perkara ini berfungsi seperti yang saya mahu dan mengingati peraturan perniagaan (jika anda tidak dapat menyelesaikannya dalam 45 minit usaha, sudah tiba masanya untuk bertanya kepada orang lain), saya membuat pertemuan dengan salah seorang pemaju. Saya tahu mereka sedang sibuk dan membuat kemas kini yang sangat diperlukan: mesyuarat itu dikeluarkan dengan nota "kami boleh menjadualkan semula jika perlu".
Semasa menunggu mesyuarat, saya terus membebel dengannya: salah satu cabaran untuk mengecilkan kawasan adalah kelas div - ia tidak dinamakan dengan baik, dan dengan Bootstrap, potensi untuk pendua div dengan nama yang sama telah menyebabkan saya menghadapi masalah di halaman lain. Bercakap dengan seseorang yang telah berada di sini lebih lama daripada saya, saya mendapati ini SELALU div ketiga pada halaman.
Sekarang saya mempunyai rancangan baharu untuk mencarinya – gunakan pencari Nth() dan cari div yang betul. Saya ingin menyelesaikan perkara ini, menulis siaran yang sedang saya taipkan sekarang, dan pergi ke isu seterusnya sebelum mesyuarat. Seperti yang mungkin diketahui dan/atau disyaki oleh ramai daripada anda, ini adalah pencetus yang baik untuk sesuatu yang mendesak untuk timbul, dan ia berlaku. Rancangan telah disalin dari halaman ke halaman dalam penganjur selama beberapa hari, sehingga tiba masanya untuk kami membangunkan pasangan.
Bekerja dengan pembangun ini sentiasa menyenangkan: kami mempunyai banyak persamaan dan menghormati antara satu sama lain. Bonusnya, mereka pandai mengajar! Selepas semakan pantas tentang matlamat itu, kami meneliti percubaan yang telah saya lakukan untuk menyelesaikan perkara ini. Saya telah meninggalkan yang terakhir, dengan ralat dalam IDE, dengan harapan ia akan membantu. Dan sekarang untuk membuat kemajuan!
Menggunakan penyahpepijat, kami mengesahkan bahawa HTML telah ditarik masuk dengan betul. Ini adalah satu kawasan yang saya belum semak sepenuhnya - dan ia bersyukur adalah betul. Kami bersetuju bahawa nama div tidak begitu berguna – kerja yang mereka lakukan baru-baru ini telah mencipta div lain dengan nama yang sama ini, tetapi pada halaman yang berbeza. Itu telah dicatat tetapi dibentangkan sehingga saya sampai ke tahap itu dalam ujian.
Kemahiran dalam NUnit yang mereka ada diperlukan – cara yang lebih mudah untuk mengesahkan bahagian ini adalah dengan menggunakan arahan AreEqual. Ini membolehkan ujian untuk memeriksa rentetan adalah sama. Penulis drama bersikap keras kepala. Ia mahukan pencari daripada rentetan - atau sebaliknya - yang hanya mengambil terlalu banyak masa untuk dibuat. Dan saya gembira mempelajari teknik ini – saya dapat lihat ia berguna pada masa hadapan!
Selepas beberapa percubaan untuk mendapatkan Nth() berfungsi, kami terpaksa menggunakan kelas div ganjil itu – selepas memastikan ia hanya digunakan sekali ini pada halaman. Itu memberi kami titik permulaan - sekarang untuk memikirkan cara untuk mendapatkan HTML di sana (syukurlah, ini adalah satu-satunya perkara dalam div khusus itu). Beberapa lagi permulaan palsu, dan akhirnya saya berputus asa dengan idea bahawa ContentAsync() untuk div itu tidak akan berfungsi, bawa mereka kepada penyelesaian yang telah saya cuba dan buang.
InnerHtmlAsync() memberi kami kandungan tepat div tersebut! Ruang dan semua. Dan itu adalah batu penghalang seterusnya - dan kami kesuntukan masa untuk mesyuarat itu. Mereka sanggup memberi saya beberapa minit lagi, syukur, kebanyakannya kerana ini adalah isu yang telah mereka selesaikan sebelum ini. Hanya memerlukan sintaks untuk mengalih keluar ruang: Ganti(" ", "") jika anda ingin tahu. Dan itu membiarkan ujian berjalan, sehingga PauseAsync() seterusnya yang saya tambahkan untuk pengesahan manual menghentikannya seketika.
Mereka pergi makan tengah hari, dan saya menghabiskan masa seterusnya untuk menyiapkan nota. Saya mempunyai perkara lain untuk dicari – dan kini lebih kepada petunjuk bagaimana untuk melakukannya.
Atas ialah kandungan terperinci Bandingkan HTML dalam Playwright .NET. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!