Selenium WebDriver siap melayani pengembang

Decoding laporan Dmitry Kostichev dengan Backend-cerita // Versi video di dalamnya

Jika Anda tiba-tiba perlu berintegrasi dengan sumber daya Internet pihak ketiga dan tidak punya waktu untuk mengetahuinya, Selenium akan datang untuk menyelamatkan. Dmitry Kostichev memberi contoh pada proyeknya bagaimana mengotomatiskan pekerjaan di browser tanpa meninggalkan layanan Anda.


Halo semua. Nama saya Dmitry dan hari ini saya akan membagikan pengalaman saya menggunakan Selenium dalam pengembangan Backend. Untuk apa ini? Selenium diperlukan untuk mengotomatisasi interaksi dengan beberapa sumber daya Internet, untuk meratakan faktor manusia dalam mengisi beberapa data, dll. Untuk pengembangan, ini mungkin diperlukan dalam kasus seperti itu ketika, misalnya, tidak ada API pada sumber daya Internet dan sebagainya. Dan pada contoh proyek saya, tugasnya adalah mengisi data klien (sebelum ini layanan harus menyiapkan semua informasi dengan benar) dan mendaftarkannya di situs ini, dalam hal ini MasterCard.



Setelah mempertimbangkan lebih lanjut situs ini, terungkap bahwa tidak ada api yang dapat kita jangkau dan lakukan segalanya. Semua pemrosesan dilakukan dalam skrip JS, di mana tidak ada yang jelas dan semua data disandikan. Keputusan telah dibuat - untuk mencoba Selenium untuk tujuan ini, yaitu, kami akan mempercepat ke Selenium seluruh layanan kami, yang akan melakukan pendaftaran ini pada saat yang pasti.

Pada akhirnya, apa itu Selenium dan bagaimana cara mengatasinya? Proyek Selenium terdiri dari perpustakaan yang berkomunikasi dengan antarmuka driver web untuk browser tertentu. Daftar pustaka dan browser yang tersedia ditampilkan pada slide. Dan sekarang saya akan menunjukkan cara kerjanya pada proyek saya.

Tonton screencast atau video terperinci di akhir posting.

Sekarang layanan akan menghasilkan file, segera unggah ke situs ini dan periksa apakah semuanya telah berhasil terdaftar. Di sini, pada kenyataannya, dia menempelkan, memuat dan sebagainya. Dan sekarang dia mungkin akan melompat pada kenyataan bahwa semuanya akan berhasil. Otomasi cukup cepat dan tidak memerlukan sumber daya yang besar. Semuanya, tampaknya, terdaftar dengan sempurna.

Bagaimana cara memasak semua ini? Perpustakaan Selenium memiliki perintah dasar seperti:

  • Membuat driver web Instance untuk browser tertentu;
  • Tautan klik;
  • Bekerja dengan elemen: klik, dll.

Driver web memungkinkan Anda untuk menerima sesi dan cookie seperti pada browser normal. Anda juga dapat mengubahnya dan menyesuaikannya untuk diri Anda sendiri. Anda juga dapat menjalankan skrip js di halaman. Ada perpustakaan yang memperluas fungsi Selenium itu sendiri, yang disebut Selenide. Fitur utamanya adalah untuk menyembunyikan pembuatan driver Instance. Sebagai contoh, kita melihat bahwa kita cukup memanggil perintah terbuka, memberikan semacam tautan dan browser sudah mulai, tidak perlu mengkonfigurasi apa pun. Dan perpustakaan memperluas karya dengan elemen, beberapa preset tambahan. Semuanya terlihat nyaman, Anda dapat dengan cepat mengetahuinya dan menggunakannya semuanya.

Ketika bekerja dengan sumber daya online, dan akhirnya dengan Selenium, ada beberapa pola desain. Dan salah satunya adalah objek halaman. Esensinya terletak pada kenyataan bahwa kita menggambarkan semua elemen ini dalam kelas tertentu. Dan kemudian kita dapat menggunakannya kembali dan itu terlihat lebih mudah. Ini sesuatu seperti ini: kita memanggil perintah terbuka, memberikan kelas objek halaman dan kemudian kita dapat menggunakan semua metode, misalnya, bekerja dengan elemen.



Kami mencari elemen dengan model DOM halaman HTML oleh penyeleksi seperti xpath, css dan lainnya. Perbedaan utama mereka, misalnya antara xpath dan css, adalah bahwa xpath bisa masuk "dalam", serta naik turun. Dan css, sebaliknya, hanya turun. Artinya, ini adalah penyeleksi yang paling banyak digunakan.



Pada akhirnya, kita membutuhkan browser secara langsung, yang Selenoid dapat membantu kita secara langsung. Intinya, ini adalah kerangka kerja yang mengontrol pembuatan dan modifikasi kontainer ini dengan browser. Tapi itu dirancang lebih untuk sistem yang dimuat di mana browser ini dibuat dalam jumlah besar. Dan dalam situasi kita, ini tidak banyak dibutuhkan, tetapi hanya menggunakan wadah itu sendiri. Dan sekarang saya akan menunjukkan bagaimana ini seharusnya sudah bekerja di server.

Sebenarnya, interaksi halaman terlihat seperti ini, ini adalah pemrosesan data yang cukup linier. Dalam hal ini, saya dibagi menjadi beberapa langkah - transisi ke halaman. Di sinilah data diisi dan, langsung, diunduh oleh file. Pada prinsipnya, semuanya cukup sederhana. Seperti inilah tampilan kelas-objek, cukup mirip dengan DTO. Kami hanya menggambarkan elemen, misalnya, di sini dalam kasus PCSS Selectum saat ini. Ini adalah sintaks Selenide.



Agar ini berfungsi, kita perlu deskripsi driver Remote untuk terhubung ke wadah buruh pelabuhan. Pengaturan utama yang Anda butuhkan adalah browser yang akan kami gunakan dan, pada kenyataannya, resolusi dan jalur penting lainnya untuk browser. Tetapi untuk bekerja dengan wadah buruh pelabuhan, Anda juga akan memerlukan pengaturan seperti mode tanpa kepala. Artinya, dalam bentuk saat ini, itu akan berputar di server. Mode ini menonaktifkan grafik di browser, sehingga akan bekerja lebih cepat dan menghabiskan lebih sedikit sumber daya.

Lebih lanjut, ini bukan Sandbox, yang dinonaktifkan oleh keamanan Chromium dalam kasus ini, dan dimungkinkan untuk mengeksekusi kode Anda sendiri, JS, atau lainnya. Parameter ketiga diperlukan agar Chromium bekerja secara normal pada mesin unix, merekam file tempo dengan benar. Dan yang keempat, sebenarnya, diperlukan agar kita dapat mengunggah file. Dan yang paling penting, driver jarak jauh memiliki bendera yang memungkinkan Anda untuk mengunduh file dari penyimpanan lokal tempat aplikasi berjalan, sudah melalui driver Hapus.



Sekarang saya akan menunjukkan cara kerjanya dengan wadah buruh pelabuhan. Unduh wadah buruh pelabuhan dan aplikasinya sendiri. Ini juga akan diluncurkan dengan cara yang kurang lebih sama, yaitu, pada prinsipnya, tidak akan ada yang baru. Hanya di sini kita akan melihat interaksi dalam semacam log. Pada prinsipnya, mereka juga dapat dimonitor, bekerja dengan mereka, dan sebagainya. Karena itu, Anda dapat memahami interaksi yang terjadi. Ini adalah output dari wadah buruh pelabuhan dengan Chromium langsung di tempat browser.



Pada prinsipnya, semuanya bekerja dengan baik dengan wadah buruh pelabuhan. Juga, semuanya sudah diperiksa dan pendaftaran berhasil diselesaikan. Lebih lanjut, masalah umum apa yang bisa dihadapi dalam pendekatan semacam itu? Saya tidak punya banyak masalah seperti ketidaktahuan. Transfer file dalam wadah buruh pelabuhan, seperti biasa, lakukan segalanya - pergantian volume. Tetapi dalam kasus ini, jika Anda masih ingin menjalankan secara lokal, Anda harus memiliki dua konfigurasi untuk proyek, tetapi, ternyata, driver Remote dapat dikonfigurasi melalui flag. Dia dapat mentransfer file ini secara langsung melalui dirinya sendiri, dan tidak ada gerakan tambahan yang diperlukan.

Anda juga harus mengikuti halaman tempat kami bekerja - sumber daya online. Karena, dalam kasus saya, ini adalah sistem lain, yang tidak ada yang memiliki hubungan dari tim saya, dan ini juga perlu dipantau, dipantau oleh log dan sebagainya. Seperti halnya peramban, peramban ini terus diperbarui, Anda harus memantaunya, dukungan dapat turun. Nah, pada prinsipnya, Anda entah bagaimana dapat mengkonfigurasi log dan tidak akan ada masalah.

Pada akhirnya, seberapa mudahkah itu? Tampak bagi saya bahwa saya bisa menyelesaikan masalah berinteraksi dengan situs ini lebih cepat daripada jika saya tahu kode js. Artinya, untuk memahami Selenium dan interaksinya bisa lebih cepat daripada dengan fakta bahwa data dikodekan dan tidak diketahui cara transcode kembali. Yang utama adalah kecepatan dalam pengembangan.

Laporkan video - mulai 16.30


All Articles