Selenium

Pengantar Selenium dengan Python 3

Pengantar Selenium dengan Python 3
Selenium adalah kerangka kerja yang digunakan untuk menguji aplikasi web. Selenium mengotomatiskan browser, seperti Chrome atau Firefox, untuk menjalankan tes 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 untuk mengekstrak informasi dari situs web.

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

Prasyarat

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

1) Distribusi Linux (lebih disukai Ubuntu) diinstal pada komputer Anda.
2) Python 3 diinstal di komputer Anda.
3) PIP 3 diinstal di 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:

$cd python-selenium-basic/

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

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

Untuk mengunduh Firefox Gecko Driver, kunjungi halaman rilis GitHub mozilla/geckodriver dari browser 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 pada file Linux geckodriver tar.arsip gz, tergantung pada arsitektur sistem operasi Anda.

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

Jika Anda menggunakan sistem operasi 64-bit, klik tombol geckodriver-v0.26.0-linuxx64.ter.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 baik.

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

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

$ tar -xzf ~/Downloads/geckodriver-v0.26.0-linux64.ter.gz -C driver/

Setelah arsip Firefox Gecko Driver diekstrak, file baru a geckodriver file biner harus dibuat di pengemudi/ direktori proyek Anda, seperti yang Anda lihat pada tangkapan layar di bawah ini.

Menguji Driver Selenium Firefox Gecko

Di bagian ini, saya akan menunjukkan 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.

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
dari waktu impor tidur
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
peramban.dapatkan('http://www.google.com')
tidur(5)
peramban.berhenti()

Setelah selesai, simpan ex01.py skrip python.

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 tutup sendiri setelah 5 detik. Jika ini terjadi, maka Selenium Firefox Gecko Driver berfungsi dengan benar.

Memasang Driver Web Chrome

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

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

Untuk menemukan nomor versi browser web Google Chrome Anda, kunjungi chrome://settings/help 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:

$ unzip ~/Downloads/chromedriver_linux64.zip -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 tangkapan layar di bawah ini.

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.

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
dari waktu impor tidur
browser = webdriver.Chrome(executable_path="./driver/chromedriver")
peramban.dapatkan('http://www.google.com')
tidur(5)
peramban.berhenti()

Setelah selesai, simpan ex02.py skrip python.

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 tutup 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.umum.kunci. 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.bebek bebek.com), hubungi Dapatkan() metode peramban objek di browser Firefox Anda.

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

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

Contoh 1: Mencetak Judul Halaman Web

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

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

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
peramban.dapatkan('https://www.bebek bebek.com')
print("Judul: %s" % browser.judul)
peramban.berhenti()

Setelah selesai, simpan file.

Di sini, peramban.judul 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 skrip 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:

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
url = ['https://www.bebek bebek.com', 'https://linuxhint.com', 'https://yahoo.com']
untuk url di url:
peramban.dapatkan (url)
print("Judul: %s" % browser.judul)
peramban.berhenti()

Setelah selesai, simpan skrip Python ex05.py.

Di sini, url list menyimpan URL setiap halaman web.

SEBUAH untuk loop digunakan untuk iterasi melalui url Daftar item.

Pada setiap iterasi, Selenium memberi tahu browser untuk mengunjungi url dan dapatkan 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.

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 pra 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

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
peramban.dapatkan("https://www.acak.org/string/?num=1&len=20&digit
=on&upperalpha=on&loweralpha=on&unique=on&format=html&rnd=baru")
elemen data = browser =.find_element_by_css_selector('sebelum.data')
cetak (elemen data.teks)
peramban.berhenti()

Setelah selesai, simpan ex06.py skrip python.

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

Itu peramban.find_element_by_css_selector() metode mencari kode HTML halaman untuk elemen tertentu dan mengembalikannya.

Dalam hal ini, elemennya adalah pra.data, itu pra 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 ini.

$ 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 generator nama-acak.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 ini. Tujuan kami adalah mengekstrak nama acak ini menggunakan Selenium.

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

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

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
peramban.get("http://random-name-generator.info/")
Daftar nama = browser =.find_elements_by_css_selector('ol.Daftar nama li')
untuk nama di nameList:
cetak(nama.teks)
peramban.berhenti()

Setelah selesai, simpan ex07.py skrip python.

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

Itu peramban.find_elements_by_css_selector() metode menggunakan pemilih CSS ol.namaDaftar li untuk menemukan semua li elemen di dalam ol tag yang memiliki nama kelas Daftar nama. Saya telah menyimpan semua yang dipilih li elemen dalam Daftar nama variabel.

SEBUAH untuk loop digunakan untuk iterasi melalui Daftar nama Daftar li elemen. Dalam setiap iterasi, isi dari li elemen dicetak di 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 sesederhana contoh pertama. Dalam contoh ini, saya akan mengunjungi mesin pencari DuckDuckGo dan mencari istilahnya selenium terbaik menggunakan Selenium.

Pertama, kunjungi Mesin Pencari DuckDuckGo dari browser 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.

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
peramban.get("https://duckduckgo.com/")
searchInput = browser.find_element_by_id('search_form_input_homepage')
cariInput.send_keys('selenium hq' + Tombol.MEMASUKKAN)

Setelah selesai, simpan ex08.py skrip python.

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

Itu peramban.temukan_elemen_oleh_id() metode memilih elemen input dengan id search_form_input_homepage dan menyimpannya di cariInput variabel.

Itu cariInput.kirim_keys() metode ini digunakan untuk mengirim data penekanan tombol ke bidang input. Dalam contoh ini, ia mengirimkan string selenium terbaik, dan tombol Enter ditekan menggunakan tombol Kunci.MEMASUKKAN konstan.

Segera setelah mesin pencari DuckDuckGo menerima tombol Enter, tekan (Kunci.MEMASUKKAN), 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 type selenium terbaik di kotak teks pencarian.

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

Contoh 6: Mengirimkan Formulir di W3Schools.com

Dalam contoh 5, pengiriman formulir mesin pencari DuckDuckGo mudah. Yang harus Anda lakukan hanyalah 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 W3Schools.com dari browser 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, itu 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.

dari selenium impor webdriver
dari selenium.webdriver.umum.kunci impor Kunci
browser = webdriver.Firefox(executable_path="./driver/geckodriver")
peramban.dapatkan("https://www.w3schools.com/html/html_forms.asp")
fname = browser.find_element_by_id('namaf')
nama-nama.bersih()
nama-nama.send_keys('Shahriar')
lnama = browser.find_element_by_id('namaku')
namaku.bersih()
namaku.send_keys('Shovon')
submitButton = browser.find_element_by_css_selector('input[type="kirim"]')
tombol kirim.send_keys(Tombol.MEMASUKKAN)

Setelah selesai, simpan ex09.py skrip python.

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

Itu peramban.temukan_elemen_oleh_id() metode menemukan bidang input dengan id nama-nama dan namaku dan menyimpannya di nama-nama dan namaku variabel, masing-masing.

Itu nama-nama.bersih() dan namaku.bersih() metode menghapus nama depan default (John) nama-nama nilai dan nama belakang (Doe) namaku nilai dari kolom input.

Itu nama-nama.kirim_kunci() dan namaku.kirim_kunci() jenis metode Shahriar dan Shovon dalam Nama depan dan nama keluarga bidang input, masing-masing.

Itu peramban.find_element_by_css_selector() metode memilih tombol kirim formulir dan menyimpannya di tombol kirim variabel.

Itu tombol kirim.kirim_keys() metode mengirim tekan tombol Enter (Kunci.MEMASUKKAN) ke tombol kirim dari bentuk. 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 dengan Python 3. Untuk informasi lebih lanjut, lihat Dokumentasi Selenium Python resmi.

Cara membalikkan arah gulir Mouse dan Touchpads di Windows 10
Mouse dan Panel sentuhs tidak hanya membuat komputasi menjadi mudah tetapi juga lebih efisien dan tidak memakan banyak waktu. Kami tidak dapat membaya...
Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...
Mesin Game Gratis dan Sumber Terbuka untuk Mengembangkan Game Linux
Artikel ini akan membahas daftar mesin game sumber terbuka dan gratis yang dapat digunakan untuk mengembangkan game 2D dan 3D di Linux. Ada banyak mes...