Cara Mengunggah & Mengunduh File menggunakan Selenium

โšก Ringkasan Cerdas

Unggah dan Unduh file menggunakan Selenium Alur kerja WebDriver mengandalkan fungsi sendKeys() bawaan untuk kolom input, AutoIt atau Robot untuk dialog, dan perintah CDP di Selenium 4. Untuk menetapkan jalur unduhan yang aman selama menjalankan otomatisasi.

  • ๐Ÿ“ค Metode Unggah: Gunakan sendKeys() pada elemen input file untuk memasukkan jalur file absolut tanpa mengklik Browse.
  • ๐Ÿ“ฅ Jalur Unduhan: Konfigurasikan direktori unduhan khusus melalui ChromeOptions atau CDP Page.setDownloadBehavior di Selenium 4.
  • ๐ŸชŸ Dialog Asli: Picu skrip AutoIt atau java.awt.Robot ketika pemilih file OS memblokir interaksi WebDriver.
  • ๐Ÿค– Bantuan AI: AI generatif menyarankan selektor, membangun file data uji, dan memvalidasi integritas file yang diunduh secara otomatis.
  • ๐Ÿ›ก๏ธ Pemeriksaan Validasi: Konfirmasikan keberhasilan unggahan melalui pesan respons dan verifikasi unduhan menggunakan ukuran file atau perbandingan checksum.

Cara Mengunggah & Mengunduh File menggunakan Selenium

Mengunggah file di WebDriver dilakukan dengan mudah hanya dengan menggunakan metode sendKeys() pada kolom input pemilihan file untuk memasukkan jalur file yang akan diunggah. Dalam tutorial ini, Anda akan mempelajari cara menangani unggahan dan unduhan file menggunakan WebDriver. Selenium Pengemudi Web.

Cara Mengunggah File ke Selenium

Untuk bagian ini, kita akan menggunakan https://demo.guru99.com/test/upload/ sebagai aplikasi pengujian kami. Situs ini dengan mudah mengizinkan pengunjung mana pun untuk mengunggah file tanpa mengharuskan mereka mendaftar.

Unggah File ke dalam Selenium
Menangani popup unggahan file di Selenium Driver web

Katakanlah kita ingin mengunggah file โ€œC:\newhtml.htmlโ€. Kode WebDriver kita harus seperti yang ditunjukkan di bawah ini.

paket proyek baru;
mengimpor org.openqa.selenium.*;
mengimpor org.openqa.selenium.firefox.FirefoxPengemudi;
kelas umum PG9 {
kekosongan statis publik utama(String[] args) {
Sistem.setProperti(โ€œwebdriver.gecko.driverโ€,โ€œC:\\geckodriver.exeโ€);
String baseUrl = โ€œhttps://demo.guru99.com/test/upload/โ€;
webdriver pengemudi = yang baru FirefoxPengemudi();

driver.get(baseUrl);
Elemen Web uploadElement = driver.findElement(By.id(โ€œuploadfile_0โ€));

// Masukkan jalur file ke dalam kolom input pemilihan file
uploadElement.sendKeys(โ€œC:\\newhtml.htmlโ€);

// centang kotak centang โ€œSaya menerima persyaratan layananโ€
driver.findElement(By.id("ketentuan")).klik();

// klik tombol โ€œUnggahBerkasโ€
driver.findElement(By.name("mengirim")).klik();
}
}

Setelah menjalankan skrip ini, Anda seharusnya berhasil mengunggah file dan Anda akan mendapatkan pesan seperti ini.

Unggah File ke dalam Selenium

Ingat dua hal berikut saat mengunggah file di WebDriver:

  1. Tidak perlu mensimulasikan pengklikkan tombol "Browse". WebDriver secara otomatis memasukkan jalur file ke dalam kotak teks pemilihan file. elemen.
  2. Saat mengatur jalur file di file Anda Java IDE, gunakan karakter escape yang tepat untuk garis miring ke belakang.

Unggah File ke dalam Selenium

Menangani Dialog Unggahan Tanpa Input dengan AutoIt

Saat halaman menggunakan tombol Jelajahi khusus alih-alih tombol bawaan. Jika elemen tersebut tidak berfungsi, sendKeys() tidak akan berfungsi. Dalam hal ini, Anda dapat memanggil skrip AutoIt dari Selenium Ketik jalur file ke dalam dialog sistem operasi dan tekan Enter.

Simpan skrip di bawah ini sebagai unggah.au3, kompilasikan ke upload.exelalu panggil dari Java setelah mengklik tombol Jelajahi.

; upload.au3 โ€“ menunggu dialog Buka dan mengetikkan jalur file
WinWaitActive("Buka")
Mengirim(โ€œC:\newhtml.htmlโ€)
Mengirim("{MEMASUKI}")

Mulai dari Java, aktifkan helper setelah klik Jelajahi:

driver.findElement(By.id(โ€œbrowseBtnโ€)).klik();
Runtime.getRuntime().exec(โ€œC:\\AutoIt\\upload.exeโ€);

Kelas java.awt.Robot adalah kelas murni-Java alternatif ketika AutoIt tidak tersedia, meskipun AutoIt lebih andal pada Windows karena menunggu dialog berdasarkan judul.

Cara Download File di Selenium Driver web

WebDriver tidak memiliki kemampuan untuk mengakses kotak dialog Unduh ditampilkan oleh browser saat Anda mengklik tautan atau tombol unduh. Namun, kita dapat melewati kotak dialog ini menggunakan program terpisah yang disebut โ€œwgetโ€.

Apa itu Wget?

Wget adalah program baris perintah kecil dan mudah digunakan yang digunakan untuk mengotomatiskan pengunduhan. Pada dasarnya, kami akan mengakses Wget dari skrip WebDriver kami untuk melakukan proses pengunduhan.

Menyiapkan Wget

Langkah 1) Di Drive C Anda, buat folder baru dan beri nama "Wget".

Unduh wget.exe dari sini lalu letakkan di dalam folder Wget yang telah Anda buat pada langkah sebelumnya.

Menyiapkan Wget

Langkah 2) Buka Run dengan menekan Windows Tekan tombol + โ€œRโ€; ketik โ€œcmdโ€ dan klik OK.

Menyiapkan Wget

Ketikkan perintah โ€œcd /โ€ untuk masuk ke direktori root.

Menyiapkan Wget

Langkah 3) Ketikkan perintah untuk memeriksa apakah pengaturan yang diberikan berfungsi.

cmd /c C:\\Wget\\wget.exe -PC: โ€“no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Menyiapkan Wget

Sepertinya ada masalah saat menulis ke drive C.

Langkah 4) Anda perlu men-debug kesalahan wget di baris perintah sebelum menjalankan kode menggunakan Selenium WebDriver. Kesalahan ini akan tetap ada. Eclipse dan pesan kesalahan tidak akan informatif. Sebaiknya coba jalankan wget terlebih dahulu menggunakan baris perintah. Jika berfungsi di baris perintah, pasti akan berfungsi di Eclipse.

Dalam contoh kita, seperti yang ditunjukkan pada Langkah 3, ada masalah saat menulis ke drive C. Mari kita ubah lokasi unduhan ke drive D dan periksa hasilnya.

cmd /c C:\\Wget\\wget.exe -PD: โ€“no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Menyiapkan Wget

Messenger berhasil diunduh.

Sebelum melanjutkan, jangan lupa untuk menghapus file yang telah diunduh.

Menggunakan WebDriver dan Wget

Dalam contoh berikut, kita akan menggunakan WebDriver dan wget untuk mengunduh perangkat lunak obrolan populer yang disebut Yahoo MessengerBasis kami URL seharusnya https://demo.guru99.com/test/yahoo.html.

Menggunakan WebDriver dan Wget

Langkah 1) Impor paket โ€œjava.io.IOExceptionโ€ karena kita harus menangkap IOException nanti di Langkah 4.

Menggunakan WebDriver dan Wget

Langkah 2) Gunakan getAttribute() untuk mendapatkan nilai โ€œhrefโ€ dari tautan unduhan dan simpan sebagai variabel String. Dalam hal ini, kita menamai variabel tersebut โ€œsourceLocationโ€.

Menggunakan WebDriver dan Wget

Langkah 3) Atur sintaks untuk wget menggunakan perintah berikut.

Menggunakan WebDriver dan Wget

Langkah 4) Mulailah proses pengunduhan dengan memanggil wget dari kode WebDriver kami.

Menggunakan WebDriver dan Wget

Singkatnya, kode WebDriver Anda akan terlihat seperti di bawah ini.

paket proyek baru;
mengimpor java.io.IOException;

mengimpor org.openqa.selenium.*;
mengimpor org.openqa.selenium.firefox.FirefoxPengemudi;
kelas umum PG8 {
kekosongan statis publik utama(String[] args) {

Sistem.setProperti(โ€œwebdriver.gecko.driverโ€,โ€œC:\\geckodriver.exeโ€);
String baseUrl = โ€œhttps://demo.guru99.com/test/yahoo.htmlโ€;
webdriver pengemudi = yang baru FirefoxPengemudi();

driver.get(baseUrl);
Elemen Web downloadButton = driver.findElement(By.id(โ€œunduh messengerโ€));
String sourceLocation = downloadButton.getAttribute(โ€œhrefโ€);
String perintah_wget = โ€œcmd /c C:\\Wget\\wget.exe -PD: โ€“no-check-certificateโ€ + sourceLocation;

mencoba {
Proses exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
Sistem.keluar.println(โ€œNilai keluar: โ€œ + exitVal);
} menangkap (Pengecualian Terganggu | Pengecualian IO mantan) {
System.out.println(ex.toString());
}
driver.close();
}
}

Setelah menjalankan kode ini, periksa drive D Anda dan verifikasi bahwa Yahoo Messenger installer berhasil diunduh di sana.

Menggunakan WebDriver dan Wget

Mengatur Jalur Unduhan Kustom dengan Selenium 4 CDP

Selenium 4 mengekspos Protokol Chrome DevTools, yang memungkinkan Anda mengontrol perilaku pengunduhan browser tanpa alat pihak ketiga. Cuplikan di bawah ini mengarahkan semua unduhan ke folder khusus dan melewati perintah Simpan Sebagai, sehingga file tersimpan di tempat yang diharapkan oleh pengujian.

Driver Chrome pengemudi = yang baru ChromeDriver();
Lokasi<String,obyek> params = yang baru HashMap<>();
params.put("perilaku", "mengizinkan");
params.put(โ€œdownloadPathโ€, โ€œD:\\selenium-downloadsโ€);
driver.executeCdpCommand(โ€œPage.setDownloadBehaviorโ€, params);
pengemudi.dapatkan(โ€œhttps://demo.guru99.com/test/yahoo.htmlโ€);
driver.findElement(By.id(โ€œunduh messengerโ€)).klik();

Anda dapat memverifikasi pengunduhan dengan melakukan polling pada direktori target untuk nama file yang diharapkan dan memeriksa ukurannya, yang membuat pengujian menjadi deterministik tanpa skrip eksternal.

Pertanyaan Umum Demo Slot

Selenium memanggil sendKeys() pada Elemen dengan jalur file absolut. Browser mengisi kolom secara langsung, sehingga tidak ada pemilih file OS yang terbuka dan tidak perlu mengklik tombol Jelajahi.

Jika halaman tidak menampilkan input file, gunakan AutoIt pada Windows atau kelas java.awt.Robot. Alat-alat ini mengetikkan jalur ke dalam dialog OS aktif dan menekan Enter setelah tombol Browse diklik.

Panggil executeCdpCommand(โ€œPage.setDownloadBehaviorโ€, params) dengan behavior diatur ke allow dan downloadPath diatur ke folder Anda. Selenium 4 meneruskan perintah ke Chrome DevTools dan permintaan Simpan Sebagai dilewati.

Ya. Asisten AI membaca formulir unggahan Anda, menyarankan pemilih, menghasilkan file batas seperti sampel kosong, terlalu besar, atau ekstensi yang salah, dan menulis blok sendKeys(). Ini mempersingkat waktu penyiapan dan mengungkap kasus-kasus khusus yang sering terlewatkan oleh penguji manusia.

Alat AI Melakukan polling pada folder target, membandingkan ukuran file dan checksum dengan nilai yang diharapkan, dan menandai ketidaksesuaian. Model visi bahkan dapat membuka PDF atau gambar dan mengkonfirmasi bahwa kontennya sesuai dengan label tautan, sehingga menghilangkan peninjauan manual dari proses regresi.

Wget sepenuhnya melewati browser dan menyimpan file langsung ke disk melalui proses baris perintah. Ini berguna pada sistem lama. Selenium 2 atau 3 pengaturan di mana preferensi unduhan CDP dan ChromeOptions tidak tersedia.

Ringkaslah postingan ini dengan: