Pengantar Selenium dengan Python 3

Introduction Selenium Python 3



Selenium adalah kerangka kerja yang digunakan untuk menguji aplikasi web. Selenium mengotomatiskan browser, seperti Chrome atau Firefox, untuk menjalankan pengujian di situs web yang Anda inginkan. Selenium juga merupakan alat pengikis web yang sangat kuat. Selenium mendukung JavaScript dan semua fitur browser modern. Alat ini sangat efektif dalam mengekstrak informasi dari situs web.

Artikel ini akan menunjukkan kepada Anda cara mengatur Selenium di distribusi Linux Anda (yaitu, Ubuntu), serta cara melakukan otomatisasi web dasar dan penghapusan web dengan pustaka Selenium Python 3.







Prasyarat

Untuk mencoba perintah dan contoh yang digunakan dalam artikel ini, Anda harus memiliki yang berikut ini:



1) Distribusi Linux (sebaiknya Ubuntu) diinstal pada komputer Anda.
2) Python 3 diinstal di komputer Anda.
3) PIP 3 diinstal pada komputer Anda.
4) Peramban web Google Chrome atau Firefox terpasang di komputer Anda.



Anda dapat menemukan banyak artikel tentang topik ini di LinuxHint.com . Pastikan untuk memeriksa artikel ini jika Anda memerlukan bantuan lebih lanjut.





Mempersiapkan Lingkungan Virtual Python 3 untuk Proyek

Lingkungan Virtual Python digunakan untuk membuat direktori proyek Python yang terisolasi. Modul Python yang Anda instal menggunakan PIP akan diinstal di direktori proyek saja, bukan secara global.

Python virtualenv modul digunakan untuk mengelola lingkungan virtual Python.



Anda dapat menginstal Python virtualenv modul secara global menggunakan PIP 3, sebagai berikut:

$ sudo pip3 instal virtualenv

PIP3 akan mengunduh dan menginstal secara global semua modul yang diperlukan.

Pada titik ini, Python virtualenv modul harus diinstal secara global.

Buat direktori proyek python-selenium-dasar/ di direktori kerja Anda saat ini, sebagai berikut:

$ mkdir -pv python-selenium-basic/drivers

Arahkan ke direktori proyek yang baru Anda buat python-selenium-dasar/ , sebagai berikut:

$CDpython-selenium-dasar/

Buat lingkungan virtual Python di direktori proyek Anda dengan perintah berikut:

$ virtualenv.env

Lingkungan virtual Python sekarang harus dibuat di direktori proyek Anda.’

Aktifkan lingkungan virtual Python di direktori proyek Anda melalui perintah berikut:

$ sumber.env/bin/aktifkan

Seperti yang Anda lihat, lingkungan virtual Python diaktifkan untuk direktori proyek ini.

Memasang Pustaka Selenium Python

Pustaka Selenium Python tersedia di repositori resmi Python PyPI.

Anda dapat menginstal perpustakaan ini menggunakan PIP 3, sebagai berikut:

$pip3 instal selenium

Pustaka Selenium Python sekarang harus diinstal.

Sekarang setelah perpustakaan Selenium Python diinstal, hal berikutnya yang harus Anda lakukan adalah menginstal driver web untuk browser web favorit Anda. Pada artikel ini, saya akan menunjukkan cara menginstal driver web Firefox dan Chrome untuk Selenium.

Menginstal Driver Firefox Gecko

Firefox Gecko Driver memungkinkan Anda untuk mengontrol atau mengotomatiskan browser web Firefox menggunakan Selenium.

Untuk mengunduh Driver Firefox Gecko, kunjungi GitHub merilis halaman mozilla/geckodriver dari peramban web.

Seperti yang Anda lihat, v0.26.0 adalah versi terbaru dari Firefox Gecko Driver pada saat artikel ini ditulis.

Untuk mengunduh Driver Firefox Gecko, gulir ke bawah sedikit dan klik arsip tar.gz Linux geckodriver, tergantung pada arsitektur sistem operasi Anda.

Jika Anda menggunakan sistem operasi 32-bit, klik tombol geckodriver-v0.26.0-linux32.tar.gz tautan.

Jika Anda menggunakan sistem operasi 64-bit, klik tombol geckodriver-v0.26.0-linuxx64.tar.gz tautan.

Dalam kasus saya, saya akan mengunduh versi 64-bit dari Firefox Gecko Driver.

Browser Anda akan meminta Anda untuk menyimpan arsip. Pilih Menyimpan file lalu klik oke .

Arsip Firefox Gecko Driver harus diunduh di ~/Unduhan direktori.

Ekstrak geckodriver-v0.26.0-linux64.tar.gz arsip dari ~/Unduhan direktori ke pengemudi/ direktori proyek Anda dengan memasukkan perintah berikut:

$ter -xzf~/Unduhan/geckodriver-v0.26.0-linux64.tar.gz-Cpengemudi/

Setelah arsip Firefox Gecko Driver diekstraksi, file baru pengemudi tokek file biner harus dibuat di pengemudi/ direktori proyek Anda, seperti yang Anda lihat pada gambar di bawah.

Menguji Driver Selenium Firefox Gecko

Di bagian ini, saya akan menunjukkan kepada Anda cara mengatur skrip Selenium Python pertama Anda untuk menguji apakah Driver Firefox Gecko berfungsi.

Pertama, buka direktori proyek python-selenium-dasar/ dengan IDE atau editor favorit Anda. Pada artikel ini, saya akan menggunakan Visual Studio Code.

Buat skrip Python baru ex01.py , dan ketik baris berikut dalam skrip.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci
dari waktu importidur
peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')
peramban.Dapatkan('http://www.google.com')
tidur(5)
peramban.berhenti()

Setelah selesai, simpan ex01.py skrip piton.

Saya akan menjelaskan kodenya di bagian selanjutnya dari artikel ini.

Baris berikut mengonfigurasi Selenium untuk menggunakan Firefox Gecko Driver dari pengemudi/ direktori proyek Anda.

Untuk menguji apakah Driver Firefox Gecko bekerja dengan Selenium, jalankan yang berikut: ex01.py skrip python:

$ python3 ex01.py

Peramban web Firefox akan secara otomatis mengunjungi Google.com dan menutup sendiri setelah 5 detik. Jika ini terjadi, maka Selenium Firefox Gecko Driver berfungsi dengan benar.

Memasang Driver Web Chrome

Driver Web Chrome memungkinkan Anda untuk mengontrol atau mengotomatiskan browser web Google Chrome menggunakan Selenium.

Anda harus mengunduh versi Chrome Web Driver yang sama dengan versi browser web Google Chrome Anda.

Untuk menemukan nomor versi browser web Google Chrome Anda, kunjungi chrome://pengaturan/bantuan di Google Chrome. Nomor versi harus di Tentang Chrome bagian, seperti yang Anda lihat pada tangkapan layar di bawah ini.

Dalam kasus saya, nomor versinya adalah 83.0.4103.116 . Tiga bagian pertama dari nomor versi ( 83.0.4103 , dalam kasus saya) harus cocok dengan tiga bagian pertama dari nomor versi Chrome Web Driver.

Untuk mengunduh Driver Web Chrome, kunjungi halaman unduhan Driver Chrome resmi .

Dalam Rilis Saat Ini bagian, Driver Web Chrome untuk rilis terbaru dari browser web Google Chrome akan tersedia, seperti yang Anda lihat pada tangkapan layar di bawah.

Jika versi Google Chrome yang Anda gunakan tidak ada di Rilis Saat Ini bagian, gulir ke bawah sedikit, dan Anda akan menemukan versi yang Anda inginkan.

Setelah Anda mengklik versi Chrome Web Driver yang benar, Anda akan dibawa ke halaman berikut. Klik pada chromedriver_linux64.zip tautan, seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Arsip Driver Web Chrome sekarang harus diunduh.

Arsip Driver Web Chrome sekarang harus diunduh di ~/Unduhan direktori.

Anda dapat mengekstrak chromedriver-linux64.zip arsip dari ~/Unduhan direktori ke pengemudi/ direktori proyek Anda dengan perintah berikut:

$ buka ritsleting~/Downloads/chromedriver_linux64.ritsleting-d driver/

Setelah arsip Driver Web Chrome diekstraksi, file baru chromedriver file biner harus dibuat di pengemudi/ direktori proyek Anda, seperti yang Anda lihat pada gambar di bawah.

Menguji Driver Web Selenium Chrome

Di bagian ini, saya akan menunjukkan cara menyiapkan skrip Selenium Python pertama Anda untuk menguji apakah Driver Web Chrome berfungsi.

Pertama, buat skrip Python baru ex02.py , dan ketik baris kode berikut dalam skrip.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci
dari waktu importidur
peramban=webdriver.Chrome(executable_path='./driver/chromedriver')
peramban.Dapatkan('http://www.google.com')
tidur(5)
peramban.berhenti()

Setelah selesai, simpan ex02.py skrip piton.

Saya akan menjelaskan kodenya di bagian selanjutnya dari artikel ini.

Baris berikut mengonfigurasi Selenium untuk menggunakan Driver Web Chrome dari pengemudi/ direktori proyek Anda.

Untuk menguji apakah Driver Web Chrome berfungsi dengan Selenium, jalankan: ex02.py Script Python, sebagai berikut:

$ python3 ex01.py

Peramban web Google Chrome akan secara otomatis mengunjungi Google.com dan menutup sendiri setelah 5 detik. Jika ini terjadi, maka Selenium Firefox Gecko Driver berfungsi dengan benar.

Dasar-dasar Pengikisan Web dengan Selenium

Saya akan menggunakan browser web Firefox mulai sekarang. Anda juga dapat menggunakan Chrome, jika Anda mau.

Skrip Selenium Python dasar akan terlihat seperti skrip yang ditunjukkan pada tangkapan layar di bawah.

Pertama, impor Selenium webdriver dari selenium modul.

Selanjutnya, impor Kunci dari selenium.webdriver.common.keys . Ini akan membantu Anda mengirim penekanan tombol keyboard ke browser yang Anda otomatiskan dari Selenium.

Baris berikut membuat peramban objek untuk browser web Firefox menggunakan Firefox Gecko Driver (Webdriver). Anda dapat mengontrol tindakan browser Firefox menggunakan objek ini.

Untuk memuat situs web atau URL (saya akan memuat situs web https://www.duckduckgo.com ), panggil Dapatkan() metode peramban objek di browser Firefox Anda.

Menggunakan Selenium, Anda dapat menulis pengujian, melakukan penghapusan web, dan terakhir, menutup browser menggunakan berhenti() metode peramban obyek.

Di atas adalah tata letak dasar skrip Selenium Python. Anda akan menulis baris-baris ini di semua skrip Selenium Python Anda.

Contoh 1: Mencetak Judul Halaman Web

Ini akan menjadi contoh termudah yang dibahas menggunakan Selenium. Dalam contoh ini, kita akan mencetak judul halaman web yang akan kita kunjungi.

Buat file baru ex04.py dan ketik baris kode berikut di dalamnya.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci

peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')

peramban.Dapatkan('https://www.duckduckgo.com')
mencetak('Judul: %s'% peramban.judul)
peramban.berhenti()

Setelah selesai, simpan file tersebut.

Di sini, browser.title digunakan untuk mengakses judul halaman web yang dikunjungi dan mencetak() fungsi akan digunakan untuk mencetak judul di konsol.

Setelah menjalankan ex04.py skrip, seharusnya:

1) Buka Firefox
2) Muat halaman web yang Anda inginkan
3) Ambil judul halaman
4) Cetak judul di konsol
5) Dan akhirnya, tutup browser

Seperti yang Anda lihat, ex04.py script telah mencetak judul halaman web dengan baik di konsol.

$ python3 ex04.py

Contoh 2: Mencetak Judul Beberapa Halaman Web

Seperti pada contoh sebelumnya, Anda dapat menggunakan metode yang sama untuk mencetak judul beberapa halaman web menggunakan loop Python.

Untuk memahami cara kerjanya, buat skrip Python baru ex05.py dan ketik baris kode berikut dalam skrip:

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci

peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')


url= ['https://www.duckduckgo.com', 'https://linuxhint.com', 'https://yahoo.com']
untukurldi dalamurl:
peramban.Dapatkan(url)
mencetak('Judul: %s'% peramban.judul)
peramban.berhenti()

Setelah selesai, simpan skrip Python ex05.py .

Di sini, url list menyimpan URL setiap halaman web.

KE untuk loop digunakan untuk iterasi melalui url Daftar item.

Pada setiap iterasi, Selenium memberi tahu browser untuk mengunjungi url dan mendapatkan judul halaman web. Setelah Selenium mengekstrak judul halaman web, itu dicetak di konsol.

Jalankan skrip Python ex05.py , dan Anda akan melihat judul setiap halaman web di url Daftar.

$ python3 ex05.py

Ini adalah contoh bagaimana Selenium dapat melakukan tugas yang sama dengan banyak halaman web atau situs web.

Contoh 3: Mengekstrak Data dari Halaman Web

Dalam contoh ini, saya akan menunjukkan kepada Anda dasar-dasar mengekstrak data dari halaman web menggunakan Selenium. Ini juga dikenal sebagai pengikisan web.

Pertama, kunjungi Random.org tautan dari Firefox. Halaman harus menghasilkan string acak, seperti yang Anda lihat pada tangkapan layar di bawah.

Untuk mengekstrak data string acak menggunakan Selenium, Anda juga harus mengetahui representasi HTML dari data tersebut.

Untuk melihat bagaimana data string acak direpresentasikan dalam HTML, pilih data string acak dan tekan tombol kanan mouse (RMB) dan klik Elemen Inspeksi (Q) , seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Representasi HTML dari data harus ditampilkan di Inspektur tab, seperti yang Anda lihat pada tangkapan layar di bawah ini.

Anda juga dapat mengklik Periksa ikon ( ) untuk memeriksa data dari halaman.

Klik ikon periksa ( ) dan arahkan kursor ke data string acak yang ingin Anda ekstrak. Representasi HTML dari data harus ditampilkan seperti sebelumnya.

Seperti yang Anda lihat, data string acak dibungkus dalam HTML untuk tag dan berisi kelas data .

Sekarang kita tahu representasi HTML dari data yang ingin kita ekstrak, kita akan membuat skrip Python untuk mengekstrak data menggunakan Selenium.

Buat skrip Python baru ex06.py dan ketik baris kode berikut dalam skrip

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci

peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')

peramban.Dapatkan('https://www.random.org/strings/?num=1&len=20&digits
=on&upperalpha=on&loweralpha=on&unique=on&format=html&rnd=new'
)

elemen data=peramban.find_element_by_css_selector('pra.data')
mencetak(elemen data.teks)
peramban.berhenti()

Setelah selesai, simpan ex06.py skrip piton.

Di sini, browser.get() metode memuat halaman web di browser Firefox.

NS browser.find_element_by_css_selector() metode mencari kode HTML halaman untuk elemen tertentu dan mengembalikannya.

Dalam hal ini, elemennya adalah pra.data , NS untuk tag yang memiliki nama kelas data .

Dibawah pra.data elemen telah disimpan di elemen data variabel.

Script kemudian mencetak konten teks yang dipilih pra.data elemen.

Jika Anda menjalankan ex06.py Skrip Python, itu harus mengekstrak data string acak dari halaman web, seperti yang Anda lihat pada tangkapan layar di bawah.

$ python3 ex06.py

Seperti yang Anda lihat, setiap kali saya menjalankan ex06.py Skrip Python, itu mengekstrak data string acak yang berbeda dari halaman web.

Contoh 4: Mengekstrak Daftar Data dari Halaman Web

Contoh sebelumnya menunjukkan kepada Anda cara mengekstrak satu elemen data dari halaman web menggunakan Selenium. Dalam contoh ini, saya akan menunjukkan cara menggunakan Selenium untuk mengekstrak daftar data dari halaman web.

Pertama, kunjungi nama-acak-generator.info dari browser web Firefox Anda. Situs web ini akan menghasilkan sepuluh nama acak setiap kali Anda memuat ulang halaman, seperti yang dapat Anda lihat pada tangkapan layar di bawah. Tujuan kami adalah mengekstrak nama acak ini menggunakan Selenium.

Jika Anda memeriksa daftar nama lebih dekat, Anda dapat melihat bahwa itu adalah daftar berurutan ( mati menandai). NS mati tag juga menyertakan nama kelas Daftar nama . Setiap nama acak direpresentasikan sebagai item daftar ( pada tag) di dalam mati menandai.

Untuk mengekstrak nama acak ini, buat skrip Python baru ex07.py dan ketik baris kode berikut dalam skrip.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci

peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')

peramban.Dapatkan('http://random-name-generator.info/')

Daftar nama=peramban.find_elements_by_css_selector('ol.nameList li')

untuknamadi dalamDaftar nama:
mencetak(nama.teks)

peramban.berhenti()

Setelah selesai, simpan ex07.py skrip piton.

Di sini, browser.get() metode memuat halaman web generator nama acak di browser Firefox.

NS browser.find_elements_by_css_selector() metode menggunakan pemilih CSS ol.nameList li untuk menemukan semua pada elemen di dalam mati tag yang memiliki nama kelas Daftar nama . Saya telah menyimpan semua yang dipilih pada elemen dalam Daftar nama variabel.

KE untuk loop digunakan untuk iterasi melalui Daftar nama Daftar pada elemen. Dalam setiap iterasi, isi dari pada elemen dicetak pada konsol.

Jika Anda menjalankan ex07.py Skrip Python, itu akan mengambil semua nama acak dari halaman web dan mencetaknya di layar, seperti yang Anda lihat pada tangkapan layar di bawah.

$ python3 ex07.py

Jika Anda menjalankan skrip untuk kedua kalinya, itu akan mengembalikan daftar baru nama pengguna acak, seperti yang Anda lihat pada tangkapan layar di bawah.

Contoh 5: Mengirim Formulir – Mencari di DuckDuckGo

Contoh ini sama sederhananya dengan contoh pertama. Dalam contoh ini, saya akan mengunjungi mesin pencari DuckDuckGo dan mencari istilahnya selenium terbaik menggunakan Selenium.

Kunjungan pertama Mesin Pencari DuckDuckGo dari peramban web Firefox.

Jika Anda memeriksa bidang input pencarian, itu harus memiliki id search_form_input_homepage , seperti yang Anda lihat pada tangkapan layar di bawah ini.

Sekarang, buat skrip Python baru ex08.py dan ketik baris kode berikut dalam skrip.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci
peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')
peramban.Dapatkan('https://duckduckgo.com/')
cariInput=peramban.temukan_elemen_oleh_id('search_form_input_homepage')
cariMasukan.send_keys('selenium terbaik'+ Kunci.MEMASUKI)

Setelah selesai, simpan ex08.py skrip piton.

Di sini, browser.get() metode memuat beranda mesin pencari DuckDuckGo di browser web Firefox.

NS browser.find_element_by_id() metode memilih elemen input dengan id search_form_input_homepage dan menyimpannya di cariInput variabel.

NS searchInput.send_keys() metode ini digunakan untuk mengirim data penekanan tombol ke kolom input. Dalam contoh ini, ia mengirimkan string selenium terbaik , dan tombol Enter ditekan menggunakan tombol Kunci.ENTER konstan.

Segera setelah mesin pencari DuckDuckGo menerima tombol Enter, tekan ( Kunci.ENTER ), itu mencari dan menampilkan hasilnya.

Jalankan ex08.py Script Python, sebagai berikut:

$ python3 ex08.py

Seperti yang Anda lihat, browser web Firefox mengunjungi mesin pencari DuckDuckGo.

Secara otomatis mengetik selenium terbaik di kotak teks pencarian.

Segera setelah browser menerima tombol Enter, tekan ( Kunci.ENTER ), itu menampilkan hasil pencarian.

Contoh 6: Mengirimkan Formulir di W3Schools.com

Dalam contoh 5, pengiriman formulir mesin pencari DuckDuckGo mudah dilakukan. Yang harus Anda lakukan adalah menekan tombol Enter. Tapi ini tidak akan terjadi untuk semua pengiriman formulir. Dalam contoh ini, saya akan menunjukkan kepada Anda penanganan formulir yang lebih kompleks.

Pertama, kunjungi Halaman Formulir HTML dari W3Schools.com dari peramban web Firefox. Setelah halaman dimuat, Anda akan melihat formulir contoh. Ini adalah formulir yang akan kami kirimkan dalam contoh ini.

Jika Anda memeriksa formulir, Nama depan bidang input harus memiliki id nama-nama , NS nama keluarga bidang input harus memiliki id namaku , dan tombol kirim harus memiliki Tipe Kirimkan , seperti yang Anda lihat pada tangkapan layar di bawah ini.

Untuk mengirimkan formulir ini menggunakan Selenium, buat skrip Python baru ex09.py dan ketik baris kode berikut dalam skrip.

dariseleniumimporwebdriver
dariselenium.webdriver.umum.kunci imporKunci
peramban=webdriver.Firefox(executable_path='./drivers/geckodriver')
peramban.Dapatkan('https://www.w3schools.com/html/html_forms.asp')
nama-nama=peramban.temukan_elemen_oleh_id('nama depan')
nama keluarga.jernih()
nama keluarga.send_keys('Shahriar')
namaku=peramban.temukan_elemen_oleh_id('nama')
namaku.jernih()
namaku.send_keys('Shovon')
tombol kirim=peramban.find_element_by_css_selector('masukkan[type='kirim']')
tombol kirim.send_keys(Kunci.MEMASUKI)

Setelah selesai, simpan ex09.py skrip piton.

Di sini, browser.get() metode membuka halaman formulir HTML W3schools di browser web Firefox.

NS browser.find_element_by_id() metode menemukan bidang input dengan id nama-nama dan namaku dan menyimpannya di nama-nama dan namaku variabel, masing-masing.

NS namanama.clear() dan nama.clear() metode menghapus nama depan default (John) nama-nama nilai dan nama belakang (Doe) namaku nilai dari kolom input.

NS fname.send_keys() dan lnama.send_keys() tipe metode Shahriar dan Shovon dalam Nama depan dan nama keluarga bidang masukan, masing-masing.

NS browser.find_element_by_css_selector() metode memilih tombol kirim formulir dan menyimpannya di tombol kirim variabel.

NS submitButton.send_keys() metode mengirim tekan tombol Enter ( Kunci.ENTER ) ke tombol kirim dari formulir. Tindakan ini mengirimkan formulir.

Jalankan ex09.py Script Python, sebagai berikut:

$ python3 ex09.py

Seperti yang Anda lihat, formulir telah dikirimkan secara otomatis dengan input yang benar.

Kesimpulan

Artikel ini akan membantu Anda memulai pengujian browser Selenium, otomatisasi web, dan perpustakaan scrapping web di Python 3. Untuk informasi lebih lanjut, lihat Dokumentasi Selenium Python resmi .