Episode ini membahas cara menambahkan dependency Selenium ke project, memahami peran Selenium Manager dan browser driver, menjalankan browser otomatis pertama, serta mencocokkan versi driver dengan versi browser untuk menghindari error kompatibilitas.

Episode 2 sudah menjelaskan komponen dan arsitektur. Sekarang saatnya menulis kode sungguhan: instalasi dan setup WebDriver. Episode 3 memastikan bahwa ketika kalian menjalankan webdriver.Chrome(), browser benar-benar terbuka dan bisa dikendalikan — tanpa error misterius di tengah jalan.
Kita akan membahas cara menambahkan dependency Selenium, memahami bagaimana Selenium Manager mengurus browser driver secara otomatis, menjalankan browser otomatis pertama dengan berbagai opsi, lalu mencocokkan versi driver dan browser agar test kalian stabil di semua mesin.
Seperti yang disiapkan di episode 0, dependency dikelola lewat virtual environment. Pastikan .venv aktif, lalu install Selenium dan pytest sekaligus:
pip install selenium pytestSetelah instalasi, bekukan dependency agar environment bisa direproduksi di mesin lain:
pip freeze > requirements.txtFile requirements.txt sekarang berisi daftar lengkap dependency. Perintah pip freeze > requirements.txt adalah kebiasaan yang wajib dipakai di setiap project test — CI di episode 11 akan menginstall ulang environment dari file ini.
Untuk menginstall ulang di mesin baru atau di CI:
pip install -r requirements.txtIni menjamin semua anggota tim dan server CI memakai versi yang sama persis. Perbedaan versi dependency adalah salah satu sumber paling umum masalah "test jalan di mesin saya tapi gagal di CI".
Sejak Selenium 4.6, Selenium Manager mengunduh browser driver yang cocok secara otomatis saat webdriver.Chrome() atau webdriver.Firefox() dipanggil. Tidak perlu lagi mengunduh ChromeDriver manual atau mengatur PATH.
from selenium import webdriver
driver = webdriver.Chrome()
print(driver.capabilities["browserVersion"])
driver.quit()Pada contoh di atas, webdriver.Chrome() mengecek versi Chrome terinstall, mengunduh ChromeDriver yang sesuai ke cache, lalu meluncurkannya. Kita bisa melihat versi browser lewat driver.capabilities["browserVersion"].
Jika tim kalian butuh kontrol penuh — misalnya mengunci versi driver tertentu di jaringan tertutup — unduh ChromeDriver dari situs resmi dan letakkan di direktori yang ada di PATH:
export PATH=$PATH:/opt/chromedriverPerintah export PATH=$PATH:/opt/chromedriver menambahkan lokasi driver ke environment. Pengaturan ini hanya berlaku di sesi terminal aktif; untuk persistensi, tambahkan ke ~/.zshrc atau ~/.bashrc.
Dengan driver siap, mari membangun script pertama yang berinteraksi dengan halaman nyata. Situs selenium.dev menyediakan halaman demo form yang cocok untuk latihan:
from selenium import webdriver
driver = webdriver.Chrome()
try:
driver.get("https://www.selenium.dev/selenium/web/web-form.html")
judul = driver.title
print("Judul halaman:", judul)
assert "Web form" in judul
finally:
driver.quit()Struktur try/finally memastikan driver.quit() selalu dieksekusi, bahkan ketika test gagal. Tanpa ini, browser bisa tertinggal sebagai proses zombie.
WebDriver tidak terbatas pada Chrome. Untuk Firefox dan Edge, ganti saja konstruktornya:
from selenium import webdriver
firefox = webdriver.Firefox()
firefox.quit()
edge = webdriver.Edge()
edge.quit()Perintah webdriver.Firefox() memakai GeckoDriver dan webdriver.Edge() memakai Edge WebDriver — keduanya juga dikelola otomatis oleh Selenium Manager. Kita akan membahas strategi lintas browser secara menyeluruh di episode 14.
Aturan utama: driver harus kompatibel dengan versi browser, bukan versi Selenium. ChromeDriver mengikuti versi mayor Chrome. Jika Chrome di-update ke versi baru tanpa driver yang sesuai, Selenium akan melempar error seperti session not created.
Selenium Manager menangani ini otomatis, tapi untuk debugging, kalian bisa memeriksa versi yang sedang berjalan:
google-chrome --version
chromedriver --versionDi dalam test, kalian juga bisa memverifikasi versi browser secara terprogram:
from selenium import webdriver
driver = webdriver.Chrome()
caps = driver.capabilities
print(caps["browserName"], caps["browserVersion"])
driver.quit()Output dari caps["browserVersion"] bisa dicatat ke dalam laporan test. Kebiasaan ini membantu tim menelusuri test yang rusak karena perubahan versi browser — salah satu topik yang akan kita dalami di episode 19.
Warning
Jangan pernah mencampur versi mayor browser dan driver. Jika Chrome 130 dan ChromeDriver 126 dipakai bersamaan, hampir pasti muncul error kompatibilitas. Andalkan Selenium Manager, atau samakan versi secara eksplisit.
Episode 3 memastikan fondasi teknis berjalan: menambahkan Selenium dan pytest ke project, memahami peran Selenium Manager dan opsi setup driver manual, menjalankan browser otomatis pertama di Chrome, Firefox, dan Edge, serta aturan pencocokan versi driver dengan browser.
Inti yang harus dibawa pulang:
pip freeze > requirements.txt.try/finally atau fixture.Di episode 4 selanjutnya kita akan membahas locating elements dan interaksi dengan DOM — teknik locator id, name, class, CSS selector, dan XPath, cara mengambil elemen, klik, kirim teks, submit form, serta interaksi dengan dropdown, checkbox, dan radio button. Ini adalah keterampilan paling sering dipakai dalam seluruh automasi.