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.

  • ๐Ÿ”˜ Informasi dasar profil: A Firefox Profil menyimpan bookmark, kata sandi tersimpan, add-on, sertifikat, dan preferensi satu pengguna dalam satu folder.
  • โ˜‘๏ธ Lokasi profil: Windows, Linux dan macOS Setiap folder profil toko berada di bawah jalur yang berbeda di dalam direktori pengguna.
  • โœ… Pembuatan profil: Pengelola profil bawaan dibuka dengan firefox.exe -p dan membangun profil otomatisasi yang bersih dalam lima langkah.
  • ๐Ÿงช Code mengakses: Kelas ProfilesIni membaca profiles.ini, dan getProfile mengembalikan profil bernama tersebut sebagai sebuah FirefoxObjek profil.
  • ๏ธ Sintaks saat ini: Selenium 3 dan 4 meneruskan profil tersebut FirefoxOptions.setProfile alih-alih FirefoxKonstruktor driver.
  • โš ๏ธ Preferensi: setPreference mengontrol folder unduhan, notifikasi, bahasa, dan penanganan sertifikat sebelum browser diluncurkan.

Selenium Firefox Panduan pengaturan profil

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.

Firefox Folder profil ditampilkan di disk dengan awalan acaknya.

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.

Windows Jalankan dialog dengan perintah firefox.exe -p yang diketikkan

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.

Firefox Pilih kotak dialog Profil Pengguna yang menampilkan daftar profil yang ada.

Langkah 4) Buat profil

Pilih opsi Buat Profil yang ditunjukkan pada tangkapan layar berikutnya untuk memulai wizard.

Layar selamat datang Panduan Pembuatan Profil di Firefox pengelola profil

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.

Memasuki yang baru Firefox nama profil di Panduan Pembuatan Profil

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.

Firefox Contoh Profil 1: Skrip yang memuat profil berdasarkan nama di 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.

Firefox Contoh Profil 2 skrip penunjuk FirefoxProfil pada jalur folder

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.

Pertanyaan Umum Demo Slot

Nomor FirefoxDriver tidak pernah mengedit profil yang sudah ada. Ia menyalin direktori profil ke lokasi sementara, menerapkan preferensi yang dibutuhkan WebDriver, dan meluncurkan browser dari salinan tersebut, sehingga bookmark dan kata sandi yang Anda simpan tetap utuh.

Ya. Ekstensi apa pun yang terpasang di profil akan dimuat bersama browser. Anda juga dapat memanggil profile.addExtension(new File(โ€œpath/to/extension.xpiโ€)) untuk melampirkan ekstensi saat runtime, yang menjaga profil di disk tetap bersih.

Python tidak memiliki padanan ProfilesIni. Poin FirefoxBuat profil di direktori profil, lalu tetapkan ke options.profile sebelum membangun driver. Selenium Python lalu salin folder tersebut persis seperti ini Java tidak.

Alat pengujian berbantuan AI membandingkan preferensi yang terekam pada pengujian yang berhasil dengan profil saat ini dan menandai penyimpangan, seperti proxy atau folder unduhan yang berubah. Beberapa kerangka kerja juga menggunakan pembelajaran mesin untuk mendeteksi ketidakstabilan terkait profil sebelum menyebabkan kegagalan build.

Kopilot GitHub menghasilkan teks standar dengan cepat, tetapi sering kali mengeluarkan teks yang telah dihapus. FirefoxPengemudi(FirefoxKonstruktor (Profil) dipelajari dari kode lama. Selalu konfirmasikan saran yang digunakan. FirefoxOptions.setProfile dan paket saat ini sebelum melakukan commit.

Ya. Panggil options.addArguments(โ€œ-headlessโ€) bersamaan dengan options.setProfile(profile). Profil tersebut menyediakan preferensi dan ekstensi persis seperti sebelumnya, karena mode headless hanya mengubah cara kerjanya. Firefox yang dirender, bukan bagaimana cara membaca direktori profilnya.

Karena WebDriver bekerja pada salinan sementara dan menghapusnya saat sesi berakhir. Untuk menyimpan perubahan, edit profil secara manual di pengelola profil, atau atur preferensi dalam kode sehingga setiap eksekusi dimulai dari keadaan yang sama yang sudah diketahui.

Tidak selalu, tetapi ini membantu. Melampirkan profil ke FirefoxOpsi tersebut mengirimkan preferensi bersama dengan muatan kemampuan, sehingga node jarak jauh menerapkan folder unduhan, proksi, dan penanganan sertifikat yang sama seperti yang dilakukan mesin lokal Anda.

Ringkaslah postingan ini dengan: