Belajar Selenium - Advanced Browser Actions
Episode 8 of 23

Belajar Selenium - Advanced Browser Actions

Episode ini membahas aksi browser tingkat lanjut: menangani alert, popup, frame, dan window, drag and drop, double click, hover, dan keyboard actions, otomasi upload dan download file, serta scrolling dan penanganan viewport.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Setelah menguasai klik, ketik, dan submit di episode 4, kalian siap untuk aksi yang lebih menantang: advanced browser actions. Aplikasi nyata punya alert JavaScript, iframe yang menyembunyikan konten, tab baru yang terbuka, elemen yang harus di-drag, file yang harus di-upload, dan halaman yang panjang harus di-scroll. Episode 8 membekali kalian dengan seluruh kendali itu.

Aksi-aksi ini sering menjadi bagian paling rumit dalam automasi, karena banyak di antaranya tidak bisa diselesaikan dengan find_element dan click biasa. Kalian butuh objek khusus seperti Alert, ActionChains, dan pemahaman tentang window handles. Mari kita bedah satu per satu.

Alerts, Popups, dan Windows

Handling JavaScript Alert

Alert browser adalah dialog native yang memblokir halaman. Selenium mengelolanya lewat objek Alert:

PythonMenerima dan membaca alert
from selenium.webdriver.common.alert import Alert
 
Alert(driver).accept()

Untuk alert dengan input, gunakan send_keys pada objek alert lalu accept:

PythonAlert dengan input
alert = driver.switch_to.alert
alert.send_keys("nama pengguna")
alert.accept()

driver.switch_to.alert mengalihkan konteks ke dialog aktif, send_keys mengisi prompt, dan accept() menyetujui. Jika muncul tombol batal, dismiss() adalah kebalikannya.

Bekerja dengan Multiple Windows

Ketika klik membuka tab baru, browser punya lebih dari satu window handle:

PythonBerpindah antar tab
sebelum = driver.current_window_handle
driver.find_element("id", "buka-tab").click()
 
for handle in driver.window_handles:
    if handle != sebelum:
        driver.switch_to.window(handle)
        break
 
print("Judul tab baru:", driver.title)
driver.close()
driver.switch_to.window(sebelum)

driver.window_handles mengembalikan daftar semua tab. Pola di atas berpindah ke tab baru, bekerja di sana, menutupnya, lalu kembali ke tab awal.

Frames dan iframes

Konten di dalam <iframe> tidak bisa ditemukan langsung dari konteks halaman utama. Kalian harus mengalihkan konteks lebih dulu:

PythonMasuk dan keluar dari iframe
driver.switch_to.frame("payment-frame")
driver.find_element("id", "nomor-kartu").send_keys("4111111111111111")
driver.switch_to.default_content()

driver.switch_to.frame("payment-frame") memindahkan konteks ke iframe berdasarkan id, name, atau elemen. Setelah selesai, default_content() mengembalikan konteks ke halaman utama. Jangan lupa keluar dari iframe sebelum mencari elemen di halaman utama.

Drag and Drop, Hover, dan Keyboard Actions

ActionChains untuk Aksi Berantai

ActionChains memungkinkan aksi kompleks yang berurutan:

PythonDrag and drop dengan ActionChains
from selenium.webdriver.common.action_chains import ActionChains
 
sumber = driver.find_element("id", "sumber")
target = driver.find_element("id", "target")
ActionChains(driver).drag_and_drop(sumber, target).perform()

drag_and_drop(sumber, target) menyeret elemen ke target. Untuk aksi lain — hover untuk memicu menu, double click, dan klik kanan — ActionChains juga menyediakan move_to_element, double_click, dan context_click.

Keyboard Actions

Kombinasi tombol seperti Ctrl+A dan Enter bisa dikirim lewat class Keys:

PythonKombinasi keyboard
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
 
inputan = driver.find_element("id", "editor")
inputan.send_keys(Keys.CONTROL, "a")
inputan.send_keys(Keys.BACKSPACE)
ActionChains(driver).send_keys(Keys.TAB).perform()

Keys.CONTROL dan Keys.BACKSPACE adalah contoh modifikasi keyboard. ActionChains send_keys(Keys.TAB) mengirim tombol di level halaman, bukan di elemen tertentu.

File Upload dan Download

Upload via send_keys

Input file di HTML menyembunyikan dialog OS, tapi Selenium tetap bisa mengirim path langsung:

PythonUpload file
path = "/home/devnull/Documents/cv.pdf"
driver.find_element("id", "input-file").send_keys(path)

send_keys(path_lengkap) pada elemen input bertipe file adalah cara paling stabil untuk upload. Dialog native tidak bisa diotomasi langsung oleh Selenium, jadi jangan pernah mencoba mengklik tombol "Browse".

Download dan Konfigurasi

Untuk download, set preferensi browser agar file masuk ke folder yang diinginkan:

PythonKonfigurasi unduhan Chrome
from selenium import webdriver
 
opsi = webdriver.ChromeOptions()
prefs = {"download.default_directory": "/tmp/download-test"}
opsi.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(options=opsi)

prefs["download.default_directory"] menentukan folder tujuan unduhan. Setelah memicu download, tunggu file benar-benar muncul di folder sebelum melanjutkan assertion.

Scrolling dan Viewport

Elemen di bawah lipatan halaman kadang perlu di-scroll dulu sebelum diinteraksi. Bisa lewat JavaScript atau aksi scroll:

PythonScroll dan ukuran viewport
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
driver.set_window_size(1440, 900)
driver.execute_script("arguments[0].scrollIntoView(true);", tombol)

window.scrollTo(0, document.body.scrollHeight) menggulir ke bagian bawah halaman, sementara scrollIntoView(true) membawa elemen tertentu ke area pandang. set_window_size(1440, 900) mengatur ukuran viewport untuk test responsif.

Warning

Klik otomatis biasanya men-scroll elemen ke dalam pandang. Jika elemen masih tertutup elemen lain, kombinasikan scroll dengan explicit wait untuk elemen clickable sebelum berinteraksi.

Penutup

Episode 8 memperluas jangkauan automasi kalian: alert yang memblokir halaman, tab baru, iframe yang menyembunyikan konten, drag and drop, hover, keyboard, upload dan download file, serta scrolling halaman panjang — semua kini bisa dikendalikan.

Inti yang harus dibawa pulang:

  • Alert ditangani lewat driver.switch_to.alert; accept, dismiss, dan input.
  • Pindah tab dengan membandingkan window handles, lalu kembali.
  • Konten iframe memerlukan switch_to.frame dan kembali lewat default_content.
  • ActionChains untuk drag, hover, dan aksi berantai; Keys untuk kombinasi keyboard.
  • Upload memakai send_keys ke input file; download diatur lewat prefs browser.

Di episode 9 selanjutnya kita akan membahas data-driven dan parameterized testing — memakai data provider untuk banyak test case, mem-parameterisasi input dan hasil yang diharapkan, mengambil data dari CSV, JSON, dan Excel, serta memperluas cakupan test ke banyak browser dan environment.

Belajar Selenium - Advanced Browser Actions | Belajar Selenium