Selenium Firefox Profil: Kurulum Kılavuzu

⚡ Akıllı Özet

Firefox Profil, bir tarayıcı kullanıcısına ait yer işaretlerini, şifreleri, eklentileri ve tercihleri ​​saklar ve Selenium WebDriver, her otomatik çalıştırmanın aynı, tahmin edilebilir tarayıcı durumundan başlaması için özel bir profil yükleyebilir.

  • 🔘 Profilin temel bilgileri: A Firefox Profil, bir kullanıcının yer işaretlerini, kaydedilmiş şifrelerini, eklentilerini, sertifikalarını ve tercihlerini tek bir klasörde saklar.
  • ☑️ Profil konumu: Windows, Linux ve macOS Her mağaza profil klasörü, kullanıcı dizini içindeki farklı bir yolda bulunur.
  • Profil oluşturma: Dahili profil yöneticisi, firefox.exe -p komutuyla açılır ve beş adımda temiz bir otomasyon profili oluşturur.
  • 🧪 Code Giriş: ProfilesIni sınıfı profiles.ini dosyasını okur ve getProfile yöntemi, belirtilen profili döndürür. FirefoxProfil nesnesi.
  • Geçerli sözdizimi: Selenium 3 ve 4, profili şu yollarla geçirir: FirefoxOptions.setProfile yerine FirefoxSürücü yapıcı.
  • ⚠️ Tercihler: setPreference parametresi, tarayıcı başlatılmadan önce indirme klasörünü, bildirimleri, dili ve sertifika işlemlerini kontrol eder.

Selenium Firefox Profil kurulum kılavuzu

Selenium Firefox Profil

Firefox profil, üzerinde yapılabilecek ayarlar, özelleştirme, eklentiler ve diğer kişiselleştirme ayarlarının toplamıdır. Firefox Browser. Kişiselleştirebilirsiniz Firefox profilinize uygun Selenium otomasyon gereksinimi.

Ayrıca, Firefox veya başka herhangi bir tarayıcı SSL sertifikalarının ayarlarını yönetir. Dolayısıyla bunları otomatikleştirmek, test yürütme koduyla birlikte çok anlamlıdır.

Özetle, profil bir kullanıcının kişisel ayarlarıdır. Güvenilir bir şekilde çalıştırmak istediğinizde... otomasyon Bir on Firefox Tarayıcı kullanıyorsanız, ayrı bir profil oluşturmanız önerilir. Özel bir profil ayrıca günlük tarama verilerinizi test çalışmasının dışında tutar; bu da bir tarayıcı kullanırken ilk olarak göz önünde bulundurulması gereken şeydir. Selenium Komut dosyası iki makinede farklı davranıyor.

Profil klasörünüzün diskteki konumu

Firefox profil tıpkı farklı kullanıcıların kullandığı gibidir Firefox. Firefox Yer işaretleri, parolalar ve kullanıcı tercihleri ​​gibi kişisel bilgileri kaydeder; bu bilgiler profil yöneticisi kullanılarak düzenlenebilir, silinebilir veya oluşturulabilir.

Aşağıdaki ekran görüntüsü, profil klasörünün diskte nasıl göründüğünü, rastgele bir ön ekle profil adıyla adlandırılmış olarak göstermektedir.

Firefox Disk üzerinde rastgele bir ön ekle gösterilen profil klasörü.

Profilin konumu aşağıdaki gibidir

  • Her Ticaretçi İçin Mükemmellik Windows > C:\Kullanıcılar\ \AppData\Roaming\Mozilla\Firefox\Profiller\profil_adı.varsayılan
  • Her Ticaretçi İçin Mükemmellik Linux > ~/.mozilla/firefox/profile_name.default/
  • Mac OS X için > ~/Library/Application Support/Firefox/Profiller/profil_adı.default/

Başarılı bir çalışma yürütmek için Selenium Test, bir Firefox profil şöyle olmalıdır –

  • Yüklemesi kolay
  • Gerekirse proxy ayarları
  • Otomasyon ihtiyaçlarına göre kullanıcıya özel diğer ayarlar

Nasıl ayarlanır Firefox Şunun için profil: Selenium Testler

Gelin, adım adım nasıl oluşturulacağını görelim. Firefox profil.

) 1 Adım Kapat Firefox tarayıcı

İlk adımda, kapatın Firefox Eğer zaten açıksa, profil yöneticisi başlatılmaz. Firefox Pencere çalışıyor.

) 2 Adım Çalıştırmayı Aç (Windows tuşu + R) ve firefox.exe –p yazın

"Tamam" düğmesine basmadan önce Çalıştır iletişim kutusu aşağıdaki ekran görüntüsündeki gibi görünmelidir.

Windows Firefox.exe -p komutunu yazarak iletişim kutusunu çalıştırın.

Not: Eğer açılmazsa, tırnak içinde tam yolu kullanarak deneyebilirsiniz.

  • 32 bit'te Windows: “C:\Program Files\Mozilla Firefox\firefox.exe” –p
  • 64 bit'te Windows (32 bit Firefox): “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p

) 3 Adım Kullanıcı profilini seçin

Şimdi, bir diyalog kutusu adı Firefox Aşağıda gösterildiği gibi açılacaktır.

Firefox Kullanıcı Profili Seç iletişim kutusu, mevcut profilleri listeler.

) 4 Adım Profil oluştur

Sihirbazı başlatmak için sonraki ekran görüntüsünde gösterilen Profil Oluştur seçeneğini seçin.

Profil Oluşturma Sihirbazı karşılama ekranında Firefox profil yöneticisi

Şimdi pencereden Profil Oluştur seçeneğini seçin; bir sihirbaz açılacaktır. İleri'ye tıklayın.

) 5 Adım Profil adınızı verin

Aşağıda vurgulanan alana otomasyon profili için bir ad yazın ve sihirbazı tamamlayın.

Yeni bir şeye girmek Firefox Profil Oluşturma Sihirbazında profil adı

Artık profiliniz hazır, profilinizi seçip açabilirsiniz FirefoxBuradan itibaren profil, diğer tarayıcı oturumları gibi davranır, yani bir ilk WebDriver betiği Hiçbir değişiklik yapılmadan ona karşı yarışacak.

Yeni olduğunu fark edeceksiniz Firefox penceresi, Yer İmleriniz ve Favori simgelerinizden hiçbirini göstermez.

Not: En son seçilen profil, bir sonraki seferde otomatik olarak yüklenecektir. Firefox öğle yemeği. Profilleri değiştirmek istiyorsanız profil yöneticisini yeniden başlatmanız gerekecektir.

Otomasyon Komut Dosyası Selenium

Profil oluşturulduktan sonraki adım, onu koddan yüklemektir. Yeni oluşturulan profile erişmek için... Firefox profilde Selenium WebDriver yazılım testinde, aşağıda gösterildiği gibi WebDriver'ın yerleşik ProfilesIni sınıfını ve getProfile yöntemini kullanmamız gerekiyor.

⚠️ Sürüm notu: Bu bölümdeki alıntılar orijinal metinlerdir. Selenium 2. form. Mevcut durumda Selenium sınıfın yaşadığı yerleri serbest bırakır. org.openqa.selenium.firefox.ProfilesIni - .dahili Alt paket kaldırıldı ve profil sürücüye şu şekilde iletildi: FirefoxSeçenekler. Bakınız. FirefoxModern karşılığı için aşağıdaki Seçenekler bölümüne bakın.

Selenium profil için kod

Bu, içine gömülebilecek bir profili uygulamaya yönelik bir koddur. Selenium kodu.

ProfilesIni profile = new ProfilesIni();

// bu, için bir nesne yaratacak Firefox profil

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// bu, Başlatılacak Firefox sürücü

WebDriver driver = new FirefoxDriver(myprofile)

Bu kodun aşağıdaki örneklerdeki uygulamasını inceleyelim.

Firefox Profil Örneği 1

İlk örnek, bir profili adına göre yükler. Aşağıdaki ekran görüntüsü, aynı betiğin düzenleyici içinde nasıl çalıştığını göstermektedir.

Firefox Profil Örneği 1: Editörde bir profili adına göre yükleyen komut dosyası

// 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();
}

}

Kodun açıklaması

Kodun satır satır açıklamasını aşağıda bulabilirsiniz.

  • Code 2-7. satırlar: Öncelikle çalıştırmak için gerekli paketi içe aktarmamız gerekiyor. Selenium kodu.
  • Code 8. satır: Herkese açık bir sınıf oluşturun “FirefoxProfil."
  • Code 9. satır: Bir nesne oluşturun (Nesne yönelimli programlamanın temel kavramlarına hakim olmanız gerekir).
  • Code 10-11. satırlar: Başlatmamız gerekiyor. Firefox myprofile nesnesiyle profil.
  • Code 13. satır: Nesne oluştur Firefox.
  • Code Satır 15: Pencereyi tam ekran yap.
  • Code 17. satır: driver.get, belirtilen konuma gitmek için kullanılır. URL.
  • Code 19. satır: `Set timeout` komutu, tarayıcının bir sonraki sayfaya geçmeden önce sayfayı yüklemesi için bir süre beklemeyi sağlar.
  • Code 21. satır: Kapat Firefox.

Bir örnek daha görelim.

Firefox Profil Örneği 2

İkinci örnekte profiles.ini dosyası atlanarak doğrudan profil klasörüne işaret ediliyor, bu durum editör ekran görüntüsünde de görülüyor.

Firefox Profil Örneği 2 komut dosyası işaret ediyor FirefoxKlasör yolundaki profil

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();
    }

Kodun açıklaması

Kodun satır satır açıklamasını aşağıda bulabilirsiniz.

  • Code 1-6. satırlar: Öncelikle çalıştırmak için gerekli paketi içe aktarmamız gerekiyor. Selenium kodu.
  • Code 8. satır: Herkese açık bir sınıf oluşturun FirefoxProfil2.
  • Code 12. satır: myprofile nesnesini tam yolu belirterek oluşturun.
  • Code 14. satır: Nesne oluştur Firefox.
  • Code Satır 16: Pencereyi tam ekran yap.
  • Code 18. satır: driver.get, belirtilen konuma gitmek için kullanılır. URL.
  • Code 20. satır: `Set timeout` komutu, tarayıcının bir sonraki sayfaya geçmeden önce sayfayı yüklemesi için bir süre beklemeyi sağlar.
  • Code 22. satır: Kapat Firefox.

Bu kod parçacığındaki yolun, orijinal eğitimde gösterildiği gibi aynen yazıldığını unutmayın. Gerçek bir bilgisayarda ters eğik çizgilerin kaçış karakteriyle belirtilmesi gerekir, örneğin “C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\”.Firefox\\Profiles\\xyzProfile.default”.

Nasıl Kullanılır Firefox Profilleri Selenium 4 ile FirefoxSeçenekler

Yukarıdaki örneklerin her ikisi de yalnızca şu koşullara göre derlenir: Selenium 2. Sonrasında iki şey değişti ve şu anki tüm eğitim videoları yeni sürümü kullanıyor.

  • ProfilesIni şirketten ayrıldı. Alt paket olduğundan, içe aktarma işlemi artık org.openqa.selenium.firefox.ProfilesIni şeklindedir.
  • MKS FirefoxSürücü(FirefoxProfil oluşturucu kaldırıldı. Profil bir şeye bağlıdır. FirefoxSeçenekler nesnesi sürücüye iletilir.
  • Selenium 4 zaman aşımı, bir değer artı bir TimeUnit yerine java.time.Duration alır, bu nedenle implicitlyWait(5, TimeUnit.SECONDS) ifadesi implicitlyWait(Duration.ofSeconds(5)) haline gelir.

Aşağıdaki tablo, eski çağrıların her birini yerine geçen çağrılarla eşleştirmektedir.

Eski arama (Selenium 2) Mevcut arama (Selenium 3 ve 4)
org.openqa.selenium.firefox.internal.ProfilesIni dosyasını içe aktar; org.openqa.selenium.firefox.ProfilesIni dosyasını içe aktar;
yeni FirefoxSürücü (profilim) seçenekler.profilimi ayarla(profilim); yeni FirefoxSürücü (seçenekleri)
implicitlyWait(5, TimeUnit.SECONDS) implicitlyWait(Duration.ofSeconds(5))
Geckodriver için System.setProperty Otomatik olarak çözüldü Selenium müdür

Güncel bir sürüme göre yeniden yazıldığında, Örnek 1 şu şekilde görünür.

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();
    }
}

Profil arama işlemi değişmedi: ProfilesIni hala profiles.ini dosyasını okuyor. Firefox `application-data` klasörü ve `getProfile` yöntemi, ad bir profille eşleşmediğinde hala `null` değeri döndürüyor; bu nedenle sürücü başlamadan önce bir `null` kontrolü eklemek faydalı olacaktır. Aynı `options` nesnesi, başka yerlerde kullanılan argümanları da içerir; örneğin, `getProfile` için kullanılanlar gibi. tarayıcı penceresini büyütmek veya yeniden boyutlandırmak.

Nasıl ayarlanır Firefox Profil Tercihleri Selenium

Kaydedilmiş bir profil hikayenin sadece yarısıdır. Otomasyonun çoğu, aynı davranışın herhangi bir makinede de geçerli olması için kodda uygulanan birkaç tercih gerektirir. setPreference yöntemi, bu değerleri profil kopyasına yazmadan önce kaydeder. Firefox başlattı.

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);

Aşağıdaki tercihler, günlük kod yazımında en sık karşılaşılan durumları kapsamaktadır.

tercih Ne kontrol ediyor?
tarayıcı.indirme.klasörlistesi Sistem varsayılanı yerine özel bir indirme klasörü kullanmak için bu değeri 2 olarak ayarlayın.
tarayıcı.indir Mutlak yol Firefox İndirilen dosyaları kaydeder.
tarayıcı.helperApps.neverAsk.saveToDisk MIME türleri indirme iletişim kutusu gösterilmeden kaydedildi.
dom.webnotifications.enabled Web push bildirim uyarılarını gizlemek için değeri false olarak ayarlayın.
uluslararası.kabul_edilenler Yerelleştirme işlemleri için faydalı olan Accept-Language başlığı.
general.useragent.geçersiz kılma Tarayıcı tarafından gönderilen kullanıcı aracısı dizesini değiştirir.

Bilmeniz gereken iki sınırlama var. Tercihler, sürücü oluşturulmadan önce ayarlanmalıdır, çünkü WebDriver başlatma sırasında profili kopyalar ve daha sonraki değişiklikler göz ardı edilir. WebDriver ayrıca tarayıcıyla iletişim kurmak için ihtiyaç duyduğu küçük bir tercih kümesini ayırır ve siz ne atarsanız atayın bunların üzerine yazar. Bu değerler komut dosyasında değil, profilde bulunduğundan, bunlar da aktarılır. tarayıcılar arası test Test kodunda herhangi bir değişiklik yapmadan çalıştırın.

ortak Firefox Profilde Hatalar Selenium ve Bunları Nasıl Düzeltebilirsiniz

Profil sorunları genellikle derleme hatası veya yanlış ayarlarla açılan bir tarayıcı şeklinde ortaya çıkar. Tabloda en sık bildirilen hatalar ve her birinin nedenleri listelenmiştir.

Semptom Sebeb olmak sabit
Yapıcı FirefoxSürücü(FirefoxProfil) tanımlanmamış Yapıcı fonksiyon, şu işlemden sonra kaldırıldı: Selenium 2. Profili şu şekilde sarın: FirefoxSeçenekleri kullanın ve bunun yerine seçenekler nesnesini iletin.
org.openqa.selenium.firefox.internal.ProfilesIni içe aktarımı çözümlenemiyor. Sınıf, dahili alt paketten dışarı taşındı. org.openqa.selenium.firefox.ProfilesIni dosyasını içe aktarın.
GetProfile'da NullPointerException Profil adı, profiles.ini dosyasındaki hiçbir kayıtla eşleşmiyor. Profil yöneticisini yeniden açın ve adı büyük/küçük harf duyarlılığına dikkat ederek aynen kopyalayın.
Sizin Firefox Profil yüklenemedi. Eksik veya erişilemez olabilir. Başka Firefox Örnek zaten profili içeriyor veya klasör yolu yanlış. Her birini kapatın Firefox Pencereyi açın ve ardından yukarıda listelenen konumlarla yolu karşılaştırarak doğrulayın.
Tercihin hiçbir etkisi yoktur. Bu ayar, sürücü başlatıldıktan sonra yapıldı veya WebDriver tarafından rezerve edildi. Her setPreference çağrısını yukarıdaki kısma taşıyın. FirefoxSürücü yapıcı.

Tarayıcı doğru şekilde başlatılıyor ancak komut dosyası sonrasında yine de başarısız oluyorsa, profil muhtemelen sorunun kaynağı değildir. Sorunu çözmek için şu adımları izleyin: istisna işleme Selenium Genellikle o noktadan itibaren daha hızlı olan yol budur.

SSS

Hayır. FirefoxDriver önceden var olan bir profili asla düzenlemez. Profil dizinini geçici bir konuma kopyalar, WebDriver'ın gerektirdiği tercihleri ​​uygular ve tarayıcıyı bu kopyadan başlatır; böylece kaydedilmiş yer işaretleriniz ve şifreleriniz dokunulmadan kalır.

Evet. Profile yüklenen herhangi bir uzantı tarayıcıyla birlikte yüklenir. Ayrıca, çalışma zamanında bir uzantı eklemek için profile.addExtension(new File(“path/to/extension.xpi”)) yöntemini de kullanabilirsiniz; bu, disk üzerindeki profili temiz tutar.

Python ProfilesIni karşılığı yok. Nokta FirefoxProfil dosyasını profil dizininde oluşturun, ardından sürücüyü derlemeden önce options.profile dosyasına atayın. Selenium Python ardından bağlamaları aynen kopyalayın. Java yapar.

Yapay zeka destekli test araçları, başarılı çalıştırmalarda yakalanan tercihleri ​​mevcut profille karşılaştırır ve değişen bir proxy veya indirme klasörü gibi sapmaları işaretler. Bazı çerçeveler ayrıca, derleme başarısız olmadan önce profille ilgili tutarsızlıkları tespit etmek için makine öğrenimini kullanır.

GitHub Yardımcı Pilotu Şablon metni hızlıca oluşturur, ancak sıklıkla kaldırılan metni de yayar. FirefoxSürücü(FirefoxProfil) yapıcı fonksiyonu eski kodlardan öğrenilmiştir. Önerinin doğru kullanıldığından her zaman emin olun. FirefoxOptions.setProfile ve mevcut paketi, commit işleminden önce ayarlayın.

Evet. options.addArguments("-headless") ifadesini options.setProfile(profile) ile birlikte çağırın. Profil, tercihleri ​​ve uzantıları tıpkı eskisi gibi sağlar, çünkü başsız mod yalnızca nasıl çalıştığını değiştirir. Firefox Bu, profil dizinini nasıl okuduğunu değil, nasıl işlediğini gösterir.

WebDriver geçici bir kopya üzerinde çalıştığı ve oturum sona erdiğinde onu sildiği için, değişikliklerin korunması için profil yöneticisinde profili manuel olarak düzenleyin veya her çalıştırmanın aynı bilinen durumdan başlaması için tercihleri ​​kodda ayarlayın.

Her zaman değil, ama yardımcı oluyor. Profili eklemek... FirefoxOptions paketi, tercih ayarlarını yetenekler yüküyle birlikte gönderir; böylece uzak bir düğüm, yerel makinenizin uyguladığı indirme klasörü, proxy ve sertifika işlemlerini aynen uygular.

Bu yazıyı şu şekilde özetleyin: