Selenium Firefox Profil: Panduan Pengaturan
โก Ringkasan Cerdas
Firefox Profil menyimpan bookmark, kata sandi, add-on, dan preferensi yang dimiliki oleh satu pengguna browser, dan Selenium WebDriver dapat memuat profil khusus sehingga setiap eksekusi otomatis dimulai dari keadaan browser yang identik dan dapat diprediksi.
Selenium Firefox Profil
Firefox profil adalah kumpulan pengaturan, penyesuaian, add-on, dan pengaturan personalisasi lainnya yang dapat dilakukan di Firefox Browser. Anda dapat menyesuaikan Firefox profil yang sesuai dengan Anda Selenium persyaratan otomatisasi.
Juga, Firefox atau browser lain yang menangani pengaturan sertifikat SSL. Jadi mengotomatiskannya sangat masuk akal bersamaan dengan kode eksekusi pengujian.
Singkatnya, profil adalah pengaturan pribadi pengguna. Saat Anda ingin menjalankan aplikasi yang andal otomatisasi pada Firefox Saat menggunakan browser, disarankan untuk membuat profil terpisah. Profil khusus juga menjaga data penelusuran harian Anda agar tidak ikut dalam pengujian, yang merupakan hal pertama yang perlu dipertimbangkan saat melakukan pengujian. Selenium Skrip tersebut berperilaku berbeda pada dua mesin.
Lokasi folder profil Anda di disk
Firefox profil sama seperti yang digunakan pengguna berbeda Firefox. Firefox Menyimpan informasi pribadi seperti bookmark, kata sandi, dan preferensi pengguna yang dapat diedit, dihapus, atau dibuat menggunakan pengelola profil.
Tangkapan layar di bawah ini menunjukkan folder profil seperti yang terlihat di disk, diberi nama sesuai profil dengan awalan acak.
Lokasi profil adalah sebagai berikut
- Untuk Windows > C:\Pengguna\ \AppData\Roaming\Mozilla\Firefox\Profiles\profile_name.default
- Untuk Linux > ~/.mozilla/firefox/profile_name.default/
- Untuk Mac OS X > ~/Library/Application Support/Firefox/Profil/nama_profil.default/
Untuk menjalankannya dengan sukses Selenium Tes, a Firefox profil seharusnya โ
- Mudah dimuat
- Pengaturan proxy jika diperlukan
- Pengaturan khusus pengguna lainnya berdasarkan kebutuhan otomatisasi
Bagaimana mengatur Firefox Profil untuk Selenium Tes
Mari kita lihat langkah demi langkah cara membuat Firefox profil.
Langkah 1) Tutup Firefox Browser
Pada langkah pertama, tutup Firefox Jika sudah terbuka, pengelola profil tidak akan dimulai selama masih terbuka. Firefox Windows sedang berjalan.
Langkah 2) Buka Jalankan (Windows tombol + R) dan ketik firefox.exe โp
Tampilan dialog Run seharusnya seperti tangkapan layar di bawah ini sebelum Anda menekan OK.
Catatan: Jika tidak terbuka, Anda dapat mencoba menggunakan jalur lengkap yang diapit tanda kutip.
- Pada 32 bit Windows: โC:\Program Files\Mozilla Firefox\firefox.exeโ โp
- Pada 64 bit Windows (32-bit Firefox): โC:\Program Files (x86)\Mozilla Firefox\firefox.exeโ โp
Langkah 3) Pilih profil pengguna
Sekarang, sebuah kotak dialog bernama Firefox akan terbuka, seperti yang ditunjukkan di bawah ini.
Langkah 4) Buat profil
Pilih opsi Buat Profil yang ditunjukkan pada tangkapan layar berikutnya untuk memulai wizard.
Sekarang, Pilih opsi Buat Profil dari jendela, dan wizard akan terbuka. Klik berikutnya.
Langkah 5) Berikan nama profil Anda
Ketik nama untuk profil otomatisasi di kolom yang disorot di bawah ini dan selesaikan wizard.
Sekarang profil Anda sudah siap, Anda dapat memilih profil Anda dan membukanya FirefoxDari sini, profil tersebut berperilaku seperti sesi browser lainnya, jadi... skrip WebDriver pertama akan berjalan melawannya tanpa perubahan.
Anda akan melihat bahwa yang baru Firefox jendela tidak akan menampilkan ikon Bookmark dan Favorit Anda.
Catatan: Profil terakhir yang dipilih akan dimuat secara otomatis pada saat berikutnya. Firefox meluncurkan. Anda harus memulai ulang pengelola profil jika ingin mengubah profil.
Skrip Otomatisasi untuk Selenium
Setelah profil dibuat, langkah selanjutnya adalah memuatnya dari kode. Untuk mengakses profil yang baru dibuat Firefox profil di dalam Selenium Dalam pengujian perangkat lunak WebDriver, kita perlu menggunakan kelas bawaan WebDriver ProfilesIni dan metode getProfile seperti yang ditunjukkan di bawah ini.
โ ๏ธ Catatan versi: Cuplikan dalam bagian ini adalah aslinya. Selenium Bentuk 2. Saat ini Selenium melepaskan kehidupan kelas di org.openqa.selenium.firefox.ProfilesIni - itu .intern Sub-paket dibatalkan โ dan profil diserahkan kepada pengemudi melalui FirefoxOpsi. Lihat FirefoxLihat bagian Opsi di bawah untuk alternatif modernnya.
Selenium kode untuk profil
Ini adalah kode untuk mengimplementasikan profil, yang dapat disematkan di dalam Selenium kode.
ProfilesIni profile = new ProfilesIni();
// ini akan membuat objek untuk Firefox profil
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// ini akan menginisialisasi Firefox pengemudi
WebDriver driver = new FirefoxDriver(myprofile)
Mari kita lihat implementasi kode ini pada contoh-contoh berikut.
Firefox Contoh Profil 1
Contoh pertama memuat profil berdasarkan nama. Tangkapan layar di bawah menunjukkan skrip yang sama di dalam editor.
// import the package import java.io.File; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.internal.ProfilesIni; public class FirefoxProfile { public static void main(String[] args) { ProfilesIni profile = new ProfilesIni(); FirefoxProfile myprofile = profile.getProfile("xyzProfile"); // Initialize Firefox driver WebDriver driver = new FirefoxDriver(myprofile); //Maximize browser window driver.manage().window().maximize(); //Go to URL which you want to navigate driver.get("http://www.google.com"); //Set timeout for 5 seconds so that the page may load properly within that time driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //close firefox browser driver.close(); } }
Penjelasan untuk kodenya
Di bawah ini penjelasan kodenya baris demi baris.
- Code baris 2-7: Pertama-tama kita perlu mengimpor paket yang dibutuhkan untuk menjalankan Selenium kode.
- Code baris 8: Buat kelas publik โFirefoxProfil."
- Code baris 9: Buat objek (Anda perlu memiliki pengetahuan dasar tentang konsep OOP).
- Code baris 10-11: Kita perlu menginisialisasi Firefox profil dengan objek myprofile.
- Code baris 13: Buat objek untuk Firefox.
- Code baris 15: Maksimalkan jendela.
- Code baris 17: driver.get digunakan untuk menavigasi ke yang diberikan URL.
- Code baris 19: Set timeout digunakan untuk menunggu beberapa waktu agar browser dapat memuat halaman sebelum melanjutkan ke halaman berikutnya.
- Code baris 21: Tutup Firefox.
Mari kita lihat satu contoh lagi.
Firefox Contoh Profil 2
Contoh kedua melewati file profiles.ini dan langsung mengarah ke folder profil, seperti yang ditunjukkan pada tangkapan layar editor.
import java.io.File; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.internal.ProfilesIni; public class FirefoxProfile2{ public static void main(String[] args) { // Create object for FirefoxProfile FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default ")); // Initialize Firefox driver WebDriver driver = new FirefoxDriver(myprofile); //Maximize browser window driver.manage().window().maximize(); //Go to URL driver.get("http://www.google.com"); //Set timeout driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //close firefox browser driver.close(); }
Penjelasan untuk kodenya
Di bawah ini penjelasan kodenya baris demi baris.
- Code baris 1-6: Pertama-tama kita perlu mengimpor paket yang dibutuhkan untuk menjalankan Selenium kode.
- Code baris 8: Buat kelas publik FirefoxProfil2.
- Code baris 12: Buat objek myprofile dengan merujuk ke jalur yang tepat.
- Code baris 14: Buat objek untuk Firefox.
- Code baris 16: Maksimalkan jendela.
- Code baris 18: driver.get digunakan untuk menavigasi ke yang diberikan URL.
- Code baris 20: Set timeout digunakan untuk menunggu beberapa waktu agar browser dapat memuat halaman sebelum melanjutkan ke halaman berikutnya.
- Code baris 22: Tutup Firefox.
Perhatikan bahwa jalur dalam cuplikan ini ditulis persis seperti yang ditunjukkan dalam tutorial aslinya. Pada mesin sungguhan, garis miring terbalik harus di-escape, misalnya โC:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\xyzProfile.defaultโ.
Cara Menggunakan a Firefox profil di Selenium 4 dengan FirefoxOpsi
Kedua contoh di atas hanya dapat dikompilasi terhadap Selenium 2. Dua hal berubah setelah itu, dan setiap tutorial saat ini menggunakan bentuk yang lebih baru.
- ProfilesIni pindah dari intern sub-paket, jadi impornya sekarang adalah org.openqa.selenium.firefox.ProfilesIni.
- The FirefoxPengemudi(FirefoxKonstruktor (Profil) telah dihapus. Profil tersebut terlampir pada sebuah FirefoxObjek opsi dan objek opsi tersebut diteruskan ke driver.
- Selenium 4 timeout menggunakan java.time.Duration alih-alih nilai ditambah TimeUnit, jadi implicitlyWait(5, TimeUnit.SECONDS) menjadi implicitlyWait(Duration.ofSeconds(5)).
Tabel di bawah ini memetakan setiap panggilan lama ke penggantinya.
| Panggilan lama (Selenium 2) | Panggilan saat ini (Selenium 3 dan 4) |
|---|---|
| impor org.openqa.selenium.firefox.internal.ProfilesIni; | impor org.openqa.selenium.firefox.ProfilesIni; |
| yang baru FirefoxPengemudi (profil saya) | opsi.setProfile(myprofile); baru FirefoxPengemudi (opsi) |
| implicitlyWait(5, TimeUnit.SECONDS) | implicitlyWait(Duration.ofSeconds(5)) |
| System.setProperty untuk geckodriver | Diselesaikan secara otomatis oleh Selenium manajer |
Ditulis ulang berdasarkan rilis terbaru, Contoh 1 terlihat seperti ini.
import java.time.Duration; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.ProfilesIni; public class FirefoxProfileSelenium4 { public static void main(String[] args) { ProfilesIni allProfiles = new ProfilesIni(); FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile"); FirefoxOptions options = new FirefoxOptions(); options.setProfile(myprofile); WebDriver driver = new FirefoxDriver(options); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); driver.get("https://www.google.com"); driver.quit(); } }
Pencarian profil itu sendiri tidak berubah: ProfilesIni masih membaca profiles.ini dari Firefox Folder application-data dan getProfile masih mengembalikan null ketika namanya tidak cocok dengan profil, jadi pemeriksaan null perlu ditambahkan sebelum driver dimulai. Objek opsi yang sama juga membawa argumen yang digunakan di tempat lain, seperti argumen untuk memaksimalkan atau mengubah ukuran jendela browser.
Bagaimana mengatur Firefox Preferensi Profil di Selenium
Profil yang tersimpan hanyalah setengah dari cerita. Sebagian besar otomatisasi membutuhkan sejumlah preferensi yang diterapkan dalam kode sehingga perilaku yang sama berlaku di mesin mana pun. Metode setPreference menulis nilai-nilai tersebut ke dalam salinan profil sebelum Firefox meluncurkan.
FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("browser.download.folderList", 2); profile.setPreference("browser.download.dir", "C:\\selenium-downloads"); profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); profile.setPreference("dom.webnotifications.enabled", false); profile.setPreference("intl.accept_languages", "es"); FirefoxOptions options = new FirefoxOptions(); options.setProfile(profile); WebDriver driver = new FirefoxDriver(options);
Preferensi di bawah ini mencakup kasus-kasus yang paling sering muncul dalam pembuatan skrip sehari-hari.
| preferensi | Apa yang dikendalikannya |
|---|---|
| browser.download.folderList | Atur ke 2 untuk menggunakan folder unduhan khusus sebagai pengganti folder default sistem. |
| browser.download.dir | Jalur absolut Firefox menyimpan unduhan ke dalam. |
| browser.helperApps.neverAsk.saveToDisk | Tipe MIME disimpan tanpa menampilkan dialog unduhan. |
| dom.webnotifications.enabled | Atur ke false untuk menekan permintaan notifikasi push web. |
| bahasa_terima_internasional | Header Accept-Language, berguna untuk proses lokalisasi. |
| umum.agen pengguna.override | Menggantikan string agen pengguna yang dikirim oleh browser. |
Ada dua batasan yang perlu diketahui. Preferensi harus diatur sebelum driver dibuat, karena WebDriver menyalin profil saat diluncurkan dan perubahan selanjutnya akan diabaikan. WebDriver juga memesan sejumlah kecil preferensi yang dibutuhkannya untuk berkomunikasi dengan browser, dan akan menimpa preferensi tersebut apa pun yang Anda tetapkan. Karena nilai-nilai tersebut berada di dalam profil dan bukan di dalam skrip, nilai-nilai tersebut juga akan terbawa. pengujian lintas browser dijalankan tanpa perubahan apa pun pada kode pengujian.
Umum Firefox Kesalahan Profil dalam Selenium dan Cara Memperbaikinya
Masalah profil biasanya muncul sebagai kesalahan kompilasi atau sebagai browser yang terbuka dengan pengaturan yang salah. Tabel tersebut mencantumkan kegagalan yang paling sering dilaporkan, beserta penyebabnya masing-masing.
| Gejala | Menyebabkan | Memperbaiki |
|---|---|---|
| Konstruktor FirefoxPengemudi(FirefoxProfil) tidak terdefinisi | Konstruktor tersebut dihapus setelahnya. Selenium 2. | Bungkus profil tersebut dengan FirefoxGunakan opsi dan berikan objek opsi tersebut sebagai gantinya. |
| Tidak dapat menyelesaikan impor org.openqa.selenium.firefox.internal.ProfilesIni | Kelas tersebut dipindahkan keluar dari sub-paket internal. | Impor org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException di getProfile | Nama profil tidak sesuai dengan entri apa pun di profiles.ini. | Buka kembali pengelola profil dan salin nama tersebut persis seperti aslinya, termasuk huruf besar dan kecil. |
| Anda Firefox Profil tidak dapat dimuat. Mungkin hilang atau tidak dapat diakses. | Lain Firefox Instance tersebut sudah memiliki profil, atau jalur foldernya salah. | Tutup semuanya Firefox jendela, lalu verifikasi jalur tersebut dengan lokasi yang tercantum di atas. |
| Preferensi tidak berpengaruh. | Nilai tersebut ditetapkan setelah driver dimulai, atau WebDriver memesannya terlebih dahulu. | Pindahkan setiap panggilan setPreference ke atas FirefoxKonstruktor driver. |
Jika browser berhasil dijalankan tetapi skrip tetap gagal setelahnya, kemungkinan besar profil bukanlah penyebabnya. Mari kita coba langkah-langkah selanjutnya. penanganan pengecualian dalam Selenium Biasanya, rute tersebut lebih cepat dari titik itu.







