Selenium, sebagai alat otomatisasi web yang sangat populer, telah mendominasi lanskap pengujian perangkat lunak sejak awal tahun 2000-an. Selenium bermula pada tahun 2004 ketika seorang insinyur perangkat lunak di ThoughtWorks, Jason Huggins, menciptakan Selenium sebagai alat otomatisasi internal untuk menguji aplikasi web. Sejak saat itu, Selenium telah berkembang pesat, didukung oleh kontribusi besar dari komunitas pengembang dan pengujian perangkat lunak.
Selenium mendukung berbagai bahasa pemrograman seperti Java, Python, C#, Ruby, dan lainnya. Ini memberikan kebebasan kepada pengembang untuk memilih bahasa yang paling sesuai dengan keahlian mereka.
Selenium tidak terbatas pada satu browser saja. Dengan menggunakan driver tertentu seperti ChromeDriver, GeckoDriver, atau WebDriver lainnya, Selenium dapat berinteraksi dengan berbagai browser web populer seperti Chrome, Firefox, Edge, dan Safari.
Disini saya akan membahas Cara Install Selenium dan GeckoDriver agar bisa berjalan dengan baik di system operation Mac OS. Ada beberapa informasi awal yang kalian wajib lakukan. Untuk hal tersebut mari kita samakan beberapa library/component dengan versi dibawah ini.
Informasi OS yang digunakan yaitu
/opt/homebrew/bin/screenfetch: line 1803: / 1024 / 1024: syntax error: operand expected (error token is "/ 1024 / 1024") bejo@bejo-MacBook-Air.local OS: unknown UUU UUU NNN NNN IIIII XXX XXXX Kernel: arm64 Darwin 23.2.0 UUU UUU NNNN NNN III XX xXX Uptime: UUU UUU NNNNN NNN III XX xXX Packages: Unknown UUU UUU NNN NN NNN III XXXX Shell: 3515 UUU UUU NNN NN NNN III xXX Disk: / () UUU UUU NNN NN NNN III xXXXX CPU: Unknown UUU UUU NNN NNNNN III xXX XX RAM: UUUuuuUUU NNN NNNN III xXX XX UUUUU NNN NNN IIIII xXXx xXXx
Versi Python yang digunakan
Contents
Python 3.11.5 (main, Sep 11 2023, 08:31:25) [Clang 14.0.6 ] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
menggunakan anaconda
conda 23.7.4
Install Selenium
Selenium adalah kerangka kerja perangkat lunak sumber terbuka yang digunakan untuk mengotomatisasi pengujian perangkat lunak dan otomatisasi tindakan pada browser web. Dikembangkan pertama kali oleh Jason Huggins pada tahun 2004 sebagai alat internal di ThoughtWorks, Selenium sejak itu telah berkembang menjadi proyek yang populer dan dikelola oleh Komunitas Selenium.
Fitur Utama Selenium:
- Otomatisasi Browser:
- Selenium memungkinkan otomatisasi tindakan pada browser web seperti mengklik, mengisi formulir, menavigasi halaman, dan melakukan tugas-tugas lainnya yang biasanya dilakukan oleh pengguna manusia.
- Pendukung Berbagai Bahasa Pemrograman:
- Selenium mendukung berbagai bahasa pemrograman seperti Java, Python, C#, Ruby, dan lainnya. Ini memberikan fleksibilitas kepada pengembang untuk memilih bahasa yang paling mereka sukai.
- Pendukung untuk Berbagai Browser:
- Selenium mendukung berbagai browser web populer seperti Chrome, Firefox, Edge, Safari, dan lainnya. Masing-masing browser memerlukan driver khusus (seperti ChromeDriver atau GeckoDriver) untuk berkomunikasi dengan Selenium.
- Tes Berulang dan Otomatisasi Pengujian:
- Selenium dapat digunakan untuk membuat dan menjalankan skrip pengujian otomatis, memungkinkan pengguna untuk mengulang pengujian secara otomatis dan memastikan konsistensi dalam pengembangan perangkat lunak.
- Integrasi dengan Framework Pengujian:
- Selenium dapat diintegrasikan dengan berbagai kerangka pengujian seperti TestNG, JUnit, dan lainnya, memungkinkan pengembang untuk mengelola dan melaporkan hasil pengujian dengan lebih efisien.
- Dukungan untuk Protokol W3C WebDriver:
- Selenium mengikuti protokol W3C WebDriver, standar industri untuk otomatisasi web. Ini memastikan konsistensi antara driver browser seperti ChromeDriver, GeckoDriver, dan browser web yang didukung.
- Otomatisasi Aplikasi Seluler:
- Selenium Grid memungkinkan otomatisasi aplikasi seluler dengan menggabungkan kekuatan Selenium WebDriver dengan otomatisasi seluler seperti Appium.
- Proyek Sumber Terbuka:
- Selenium bersifat sumber terbuka (open source), yang berarti bahwa kode sumbernya dapat diakses dan dimodifikasi oleh siapa saja. Hal ini telah menyebabkan pertumbuhan komunitas yang besar dan beragam.
Kita akan menggunakan versi selenium sebagai berikut
pip install selenium==4.11.0
Gecko Driver
GeckoDriver adalah driver browser yang dikembangkan oleh Mozilla untuk mendukung otomatisasi dalam Firefox menggunakan Selenium. Dalam konteks Selenium, driver adalah perangkat lunak yang memungkinkan Selenium berkomunikasi dengan browser. GeckoDriver, sebagai driver untuk Firefox, bertanggung jawab atas eksekusi perintah-perintah Selenium dan memastikan interaksi yang benar-benar terjadi pada browser Firefox.
Kenapa GeckoDriver Penting?
- Kompatibilitas dengan Firefox: GeckoDriver dibangun khusus untuk berinteraksi dengan Firefox. Ini memastikan bahwa otomatisasi yang dikembangkan dengan menggunakan Selenium dapat dijalankan dengan lancar pada browser ini.
- Protokol W3C WebDriver: GeckoDriver mengikuti protokol W3C WebDriver yang disepakati secara industri. Hal ini memastikan bahwa GeckoDriver dapat berintegrasi dengan alat otomatisasi web lainnya yang juga mengikuti standar ini.
- Mendukung Pengetesan dan Otomatisasi Web: GeckoDriver sangat diperlukan untuk pengujian otomatis dan pengembangan web. Ini memungkinkan pengembang untuk merancang dan menjalankan skenario pengujian otomatis pada situs web menggunakan Firefox.
- Pembaruan dan Perbaikan Keamanan: Dikembangkan oleh Mozilla, GeckoDriver secara teratur diperbarui untuk memastikan keselamatan dan keamanan. Pembaruan ini sering kali mencakup peningkatan kinerja, perbaikan bug, dan peningkatan keamanan.
Kalian bisa download https://github.com/mozilla/geckodriver/releases
versi mac OS ARM: geckodriver-v0.34.0-macos-aarch64.tar.gz
geckodriver 0.34.0 (c44f0d09630a 2024-01-02 15:36 +0000) The source code of this program is available from testing/geckodriver in https://hg.mozilla.org/mozilla-central. This program is subject to the terms of the Mozilla Public License 2.0. You can obtain a copy of the license at https://mozilla.org/MPL/2.0/.
Setting Path gecko driver
Setelah di download, saya akan meletakan di /Users/bejo/Downloads kemudian biar dikenali oleh sistem jangan lupa untuk setting path dengan membuka terminal dan ketikan perintah berikut
export PATH="$PATH:/Users/bejo/Downloads"
Cara Install Selenium dan GeckoDriver akan kita coba dengan membuka URL berikut via python
from selenium import webdriver browser = webdriver.Firefox() browser.get('https://softscients.com')
untuk perintah-perintah yang lain seperti mengisi form dan click button, kalian bisa cari internet.
Perbandingan selenium dengan mechanize
Selain selenium, kita juga bisa menggunakan library mechanize, kalian bisa baca artikel Bruteforce Password tersebut yang menggunakan library mechanize.
Selenium dan Mechanize adalah dua alat yang digunakan dalam konteks otomatisasi web, tetapi memiliki perbedaan mendasar dalam pendekatan, ruang lingkup, dan fungsionalitas mereka. Berikut adalah perbandingan antara Selenium dan Mechanize:
1. Pendekatan dan Ruang Lingkup:
- Selenium:
- Pendekatan Browser Automation: Selenium dirancang untuk mengotomatisasi interaksi pengguna pada browser. Ini mencakup tindakan seperti mengklik, mengisi formulir, menavigasi halaman web, dan sejenisnya.
- Berbagai Browser: Selenium mendukung berbagai browser web, seperti Chrome, Firefox, Edge, dan Safari, melalui driver browser masing-masing.
- JavaScript Execution: Selenium dapat menjalankan dan menguji JavaScript di browser.
- Mechanize:
- HTTP Browser: Mechanize bertindak sebagai “peramban HTTP” dan bekerja pada tingkat protokol HTTP. Ini tidak mengotomatisasi browser sepenuhnya, tetapi berfokus pada pengiriman permintaan HTTP dan pengelolaan respons.
- Tidak Mendukung JavaScript: Mechanize tidak mendukung eksekusi JavaScript, sehingga tidak cocok untuk kasus pengujian atau otomatisasi yang melibatkan interaksi JavaScript di halaman web.
2. Bahasa Pemrograman:
- Selenium:
- Fleksibel: Selenium mendukung berbagai bahasa pemrograman seperti Java, Python, C#, Ruby, dan lainnya. Ini memberikan fleksibilitas kepada pengembang untuk memilih bahasa yang paling sesuai dengan keahlian mereka.
- Mechanize:
- Python-Centric: Mechanize dikembangkan terutama untuk bahasa pemrograman Python. Meskipun ada implementasi serupa untuk bahasa lain, fokus utamanya adalah pada Python.
3. JavaScript dan HTML Parsing:
- Selenium:
- Parsing JavaScript: Selenium dapat menjalankan dan menguji JavaScript, memungkinkan interaksi dengan elemen-elemen yang dimodifikasi atau dibangun secara dinamis menggunakan JavaScript.
- HTML Parsing: Selenium juga memiliki kemampuan untuk melakukan analisis HTML.
- Mechanize:
- Tidak Mendukung JavaScript: Mechanize tidak mendukung eksekusi JavaScript, sehingga tidak dapat berinteraksi dengan elemen-elemen yang dimodifikasi secara dinamis oleh JavaScript.
- HTML Parsing: Mechanize fokus pada pengiriman permintaan HTTP dan pengelolaan respons, termasuk parsing HTML.
4. Kasus Penggunaan:
- Selenium:
- Pengujian Web dan Otomatisasi Pengguna: Selenium ideal untuk pengujian otomatis dan otomatisasi pengguna di lingkungan browser.
- Scraping dan Automasi Web yang Melibatkan JavaScript: Cocok untuk skenario yang memerlukan interaksi dengan elemen-elemen yang dimodifikasi oleh JavaScript.
- Mechanize:
- Scraping Sederhana dan Interaksi HTTP: Mechanize dapat digunakan untuk scraping sederhana atau interaksi HTTP yang tidak memerlukan eksekusi JavaScript.
- Manajemen Formulir dan Pengiriman Permintaan HTTP: Cocok untuk kasus penggunaan yang melibatkan pengisian formulir dan pengelolaan permintaan HTTP.
5. Ketersediaan dan Dukungan:
- Selenium:
- Proyek Global: Selenium adalah proyek open source yang dikelola secara global dengan dukungan komunitas yang besar.
- Dokumentasi yang Kaya: Selenium memiliki dokumentasi yang kaya dan berbagai sumber daya daring.
- Mechanize:
- Pemeliharaan Lebih Terbatas: Mechanize mungkin tidak memiliki tingkat pemeliharaan atau dukungan komunitas sebesar Selenium.
- Dokumentasi yang Tidak Sebanyak Selenium: Dokumentasi Mechanize mungkin tidak sekomprehensif Selenium
Selenium dengan Setting Proxy
Jika kalian menggunakan proxy pun, bisa kita atur/setting dengan pengaturan sebagai berikut
from selenium import webdriver import json import glob from datetime import date from selenium.webdriver.common.by import By from selenium.webdriver.common.proxy import Proxy,ProxyType from selenium.webdriver.firefox.options import Options options = Options() options.set_preference("network.proxy.type", 1) #options.binary_location = r"C:\Program Files\Mozilla Firefox\firefox.exe" options.set_preference("network.proxy.http", "91.65.102.60") options.set_preference("network.proxy.http_port",80) #options.set_preference("network.proxy.ssl", "xx.xxx.xxx.xxx") #options.set_preference("network.proxy.ssl_port", 8000) driver = webdriver.Firefox(options = options) url_master = "http://checkip.amazonaws.com" driver.get(url_master)