Di artikel ini, kita akan bahas langkah-langkah membuat bot sederhana di Python menggunakan Selenium untuk memasukkan data ke dalam form secara otomatis. Script ini sangat cocok jika Anda sering melakukan pengisian data form secara manual dari file Excel, karena bisa menghemat waktu dengan mengotomatisasi proses tersebut.
Persiapan Script Otomatisasi Pengisian Data Form
1. Setup Lingkungan Python dan Install Library yang Diperlukan
Pertama, pastikan Anda memiliki modul selenium
dan pandas
. Kalau belum, install dengan perintah berikut di terminal:
pip install selenium pandas
2. Siapkan File Excel dan Form HTML
- File Excel: Buat file Excel dengan data yang ingin diisi ke dalam form. Contoh struktur data:
- Form HTML: Siapkan form HTML dengan elemen input sesuai dengan kode berikut:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Formulir Otomatis</title> <script> function showData() { const nama = document.getElementById("nama").value; const email = document.getElementById("email").value; const pesan = document.getElementById("pesan").value; alert("Data yang diisi:\nNama: " + nama + "\nEmail: " + email + "\nPesan: " + pesan); return false; // Mencegah form benar-benar ter-submit } </script> </head> <body> <h2>Isi Formulir Otomatis</h2> <form id="form" action="#" method="post" onsubmit="return showData();"> <label for="nama">Nama:</label><br> <input type="text" id="nama" name="nama"><br><br> <label for="email">Email:</label><br> <input type="email" id="email" name="email"><br><br> <label for="pesan">Pesan:</label><br> <textarea id="pesan" name="pesan" rows="4" cols="50"></textarea><br><br> <button type="submit" id="submit">Kirim</button> </form> </body> </html>
- name=”nama” untuk kolom nama
- name=”email” untuk kolom email
- name=”pesan” untuk kolom pesan
- id=”submit” untuk tombol submit
Nama | Pesan | |
---|---|---|
John Doe | [email protected] | Halo, ini John! |
Jane Smith | [email protected] | Hai, ini Jane! |
Simpan file HTML ini di komputer Anda.
Penjelasan Script Python untuk Mengisi Form Secara Otomatis
Berikut adalah penjelasan script Python yang akan membaca data dari file Excel dan mengisinya di form secara otomatis.
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException, UnexpectedAlertPresentException import pandas as pd import time import logging
- Library yang Digunakan:
- selenium untuk mengontrol browser secara otomatis.
- pandas untuk membaca file Excel.
- time untuk memberi jeda antar operasi.
- logging untuk mencatat hasil dan kesalahan yang terjadi.
3. Membaca Data Excel dan Menyiapkan Logging
logging.basicConfig(filename="form_filling_log.txt", level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") excel_path = "/Users/sugonogalih/Desktop/belajar-python/data-entry-bot/data.xlsx" data = pd.read_excel(excel_path)
- Logging: Script ini menggunakan logging untuk mencatat setiap pengisian form dan kesalahan yang terjadi.
- Membaca File Excel: Sesuaikan excel_path dengan lokasi file Excel Anda.
4. Mendefinisikan Path Form HTML dan Menentukan Batas Data per Batch
form_path = "file:///Users/sugonogalih/Desktop/belajar-python/data-entry-bot/form.html" batch_size = 100 results = pd.DataFrame(columns=["Index", "Nama", "Email", "Pesan", "Status"])
- Path Form: Pastikan form_path merujuk pada lokasi file HTML form di komputer Anda.
- Batch Size: Tentukan jumlah data yang di-submit dalam satu sesi (misal 100 data).
5. Fungsi Mengisi Form dari Data Excel
Fungsi fill_form
ini bertugas untuk mengisi form berdasarkan data dari satu baris di Excel.
def fill_form(row, index): try: driver.get(form_path) time.sleep(2) try: nama_input = driver.find_element(By.NAME, "nama") email_input = driver.find_element(By.NAME, "email") pesan_input = driver.find_element(By.NAME, "pesan") submit_button = driver.find_element(By.ID, "submit") except NoSuchElementException: logging.error(f"Elemen form tidak ditemukan pada baris {index + 1}") results.loc[len(results)] = [index + 1, row["Nama"], row["Email"], row["Pesan"], "Error - Elemen tidak ditemukan"] return
Di sini kita buka file HTML lokal, lalu cari elemen form. Jika ada elemen yang tidak ditemukan, akan dicatat sebagai error di form_filling_log.txt
.
6. Mengisi Data Form dan Memeriksa Kebenaran Data
nama_input.clear() nama_input.send_keys(row["Nama"]) email_input.clear() email_input.send_keys(row["Email"]) pesan_input.clear() pesan_input.send_keys(row["Pesan"]) nama_filled = nama_input.get_attribute("value") email_filled = email_input.get_attribute("value") pesan_filled = pesan_input.get_attribute("value") if nama_filled == row["Nama"] and email_filled == row["Email"] and pesan_filled == row["Pesan"]: logging.info(f"Data pada baris {index + 1} terisi dengan benar: {row['Nama']}, {row['Email']}") status = "Sukses" else: logging.warning(f"Kesalahan pada pengisian data baris {index + 1}. Data terisi: {nama_filled}, {email_filled}, {pesan_filled}") status = "Kesalahan Pengisian Data"
Kita melakukan pengecekan apakah data yang diisi sesuai dengan data di Excel. Jika sesuai, maka ditandai sebagai “Sukses”. Jika tidak, maka dicatat sebagai “Kesalahan Pengisian Data”.
7. Submit Data dan Tutup Alert (Jika Muncul)
submit_button.click() time.sleep(1) try: alert = driver.switch_to.alert alert_text = alert.text alert.accept() logging.info(f"Alert muncul: {alert_text}") status = "Sukses - Alert Ditutup" except UnexpectedAlertPresentException: logging.warning(f"Alert tidak muncul pada baris {index + 1}")
Di sini script meng-klik tombol submit, dan jika ada alert yang muncul, alert akan ditutup.
8. Proses Loop untuk Menjalankan Fungsi Pengisian Form
for start in range(0, len(data), batch_size): driver = webdriver.Chrome() batch_data = data.iloc[start:start + batch_size] for index, row in batch_data.iterrows(): fill_form(row, index) driver.quit() time.sleep(2)