Selenium Firefox Profiil: häälestusjuhend

⚡ Nutikas kokkuvõte

Firefox profiil salvestab ühe brauserikasutaja järjehoidjad, paroolid, lisandmoodulid ja eelistused ning Selenium WebDriver saab laadida spetsiaalse profiili, nii et iga automatiseeritud käivitamine algab identsest ja prognoositavast brauseri olekust.

  • 🔘 Profiili põhitõed: A Firefox Profiil sisaldab ühe kasutaja järjehoidjaid, salvestatud paroole, lisandmooduleid, sertifikaate ja eelistusi ühes kaustas.
  • ☑️ Profiili asukoht: Windows, Linux ja macOS iga profiilikausta salvestatakse kasutajakataloogis erineva tee alla.
  • Profiili loomine: Sisseehitatud profiilihaldur avaneb käsuga firefox.exe -p ja loob viie sammuga puhta automatiseerimisprofiili.
  • 🧪 Code juurdepääs: Klass ProfilesIni loeb faili profiles.ini ja getProfile tagastab nimega profiili FirefoxProfiiliobjekt.
  • 🛠️ Praegune süntaks: Selenium 3 ja 4 läbivad profiili FirefoxOptions.setProfile asemel FirefoxJuhi konstruktor.
  • ⚠️ Eelistused: setPreference kontrollib allalaadimiskausta, teatisi, keelt ja sertifikaatide käsitlemist enne brauseri käivitamist.

Selenium Firefox Profiili seadistamise juhend

Selenium Firefox profiil

Firefox profiil on seadete, kohandamiste, lisandmoodulite ja muude isikupärastamise seadete kogum, mida saab teha Firefox BrowserSaate kohandada Firefox profiil, mis sobib teile Selenium automatiseerimise nõue.

Niisiis, Firefox või mis tahes muu brauser käsitleb SSL-sertifikaatide sätteid. Seega on nende automatiseerimine koos testi täitmiskoodiga väga mõttekas.

Lühidalt öeldes on profiil kasutaja isiklikud seaded. Kui soovite usaldusväärset automaatika kohta Firefox brauseri puhul on soovitatav luua eraldi profiil. Spetsiaalne profiil hoiab ka teie igapäevased sirvimisandmed testprotsessist eemal, mis on esimene asi, mida tuleks brauseri kasutamisel välistada. Selenium Skript käitub kahes masinas erinevalt.

Teie profiilikausta asukoht kettal

Firefox profiil on nagu erinevad kasutajad Firefox. Firefox salvestab isikuandmeid, näiteks järjehoidjaid, paroole ja kasutaja eelistusi, mida saab profiilihalduri abil muuta, kustutada või luua.

Allolev ekraanipilt näitab profiilikausta nii, nagu see kettal kuvatakse, nime saanud profiili järgi ja juhusliku eesliitega.

Firefox profiilikaust kettal koos juhusliku eesliitega

Profiili asukoht on järgmine

  • eest Windows > C:\Kasutajad\ \AppData\Roaming\Mozilla\Firefox\Profiilid\profiili_nimi.vaikimisi
  • eest Linux > ~/.mozilla/firefox/profiili_nimi.default/
  • Mac OS X puhul > ~/Library/Rakenduste tugi/Firefox/Profiilid/profiili_nimi.default/

Selleks, et joosta edukas Selenium Test, a Firefox profiil peaks olema -

  • Lihtne laadida
  • Vajadusel puhverserveri seaded
  • Muud kasutajaspetsiifilised sätted, mis põhinevad automatiseerimisvajadustel

Kuidas seada Firefox Profiil jaoks Selenium Testid

Vaatame samm-sammult, kuidas luua Firefox profiil.

Step 1) Sulgege Firefox brauseri

Esimeses etapis sulgege Firefox kui see on juba avatud. Profiilihaldur ei käivitu, kui a Firefox aken töötab.

Step 2) Ava Käivita (Windows klahv + R) ja tippige firefox.exe –p

Enne OK vajutamist peaks dialoogiaken Käivita välja nägema nagu alloleval ekraanipildil.

Windows Käivita dialoog käsuga firefox.exe -p

Märkus: Kui see ei avane, võite proovida kasutada jutumärkides täielikku teed.

  • 32-bitisel Windows: „C:\Program Files\Mozilla” Firefox\firefox.exe” –p
  • 64-bitisel Windows (32-bitine Firefox): „C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p

Step 3) Valige kasutajaprofiil

Nüüd dialoogiboks nimega Firefox avaneb, nagu allpool näidatud.

Firefox Kasutajaprofiili valimise dialoogiboks, kus on loetletud olemasolevad profiilid

Step 4) Loo profiil

Viisardi käivitamiseks valige järgmisel ekraanipildil näidatud suvand Loo profiil.

Profiili loomise viisardi tervituskuva Firefox profiilihaldur

Nüüd valige aknast suvand Loo profiil ja avaneb viisard. Klõpsake järgmisel.

Step 5) Andke oma profiilinimi

Tippige allpool esile tõstetud väljale automatiseerimisprofiili nimi ja lõpetage viisard.

Uue sisenemine Firefox profiili nimi profiili loomise viisardis

Nüüd on teie profiil valmis, saate valida oma profiili ja avada FirefoxSiit edasi käitub profiil nagu iga teine ​​brauseriseanss, seega a esimene WebDriveri skript esitatakse selle vastu muutmata kujul.

Märkad, et uus Firefox aken ei näita teie järjehoidjate ja lemmikute ikoone.

Märkus: Viimati valitud profiil laaditakse järgmisel korral automaatselt. Firefox käivitada. Kui soovite profiile muuta, peate profiilihalduri taaskäivitama.

Automatiseerimisskript jaoks Selenium

Kui profiil on loodud, on järgmine samm selle laadimine koodist. Uuele profiilile juurdepääsemiseks Firefox profiil a-s Selenium WebDriveri tarkvara testimiseks peame kasutama WebDriveri sisseehitatud klassi ProfilesIni ja selle meetodit getProfile, nagu allpool näidatud.

⚠️ Versiooni märkus: selle jaotise katkendid on originaalid Selenium 2. vorm. Praeguses Selenium klassi elukohad org.openqa.selenium.firefox.ProfilesIni - .sisemine alampakett eemaldati — ja profiil antakse juhile läbi FirefoxValikud. Vaadake FirefoxMoodsa vaste valikute jaotis allpool.

Selenium profiili kood

See on kood profiili rakendamiseks, mille saab manustada Selenium kood.

ProfilesIni profile = new ProfilesIni();

// see loob objekti jaoks Firefox profiil

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

// see initsialiseerib faili Firefox juht

WebDriver driver = new FirefoxDriver(myprofile)

Vaatleme selle koodi rakendamist järgmistes näidetes.

Firefox Profiili näide 1

Esimeses näites laaditakse profiil nime järgi. Allolev ekraanipilt näitab sama skripti redaktoris.

Firefox Profiili näide 1 skript laadib redaktorisse profiili nime järgi

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

}

Koodi selgitus

Allpool on koodide selgitus ridade kaupa.

  • Code rida 2-7: Kõigepealt peame importima paketi, mis on vajalik programmi käivitamiseks. Selenium kood.
  • Code rida 8: Loo avalik klass “FirefoxProfiil."
  • Code rida 9: Loo objekt (sul peavad olema OOP-ide põhiteadmised).
  • Code rida 10-11: Peame initsialiseerima Firefox profiil objektiga minuprofiil.
  • Code rida 13: Loo objekt Firefox.
  • Code rida 15: Akna maksimeerimine.
  • Code rida 17: driver.get'i kasutatakse antud sihtkohta navigeerimiseks URL.
  • Code rida 19: Ajalimiidi määramist kasutatakse selleks, et oodata teatud aega, mille jooksul brauser saab enne järgmisele lehele liikumist lehte laadida.
  • Code rida 21: Sulge Firefox.

Vaatame veel ühte näidet.

Firefox Profiili näide 2

Teine näide jätab profiles.ini vahele ja osutab otse profiilikaustale, nagu redaktori ekraanipilt näitab.

Firefox Profiili näide 2 skripti osutamine FirefoxProfiil kausta teel

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

Koodi selgitus

Allpool on koodide selgitus ridade kaupa.

  • Code rida 1-6: Kõigepealt peame importima paketi, mis on vajalik programmi käivitamiseks. Selenium kood.
  • Code rida 8: Loo avalik klass FirefoxProfiil2.
  • Code rida 12: Loo myprofile'i objekt, viidates täpsele teele.
  • Code rida 14: Loo objekt Firefox.
  • Code rida 16: Akna maksimeerimine.
  • Code rida 18: driver.get'i kasutatakse antud sihtkohta navigeerimiseks URL.
  • Code rida 20: Ajalimiidi määramist kasutatakse selleks, et oodata teatud aega, mille jooksul brauser saab enne järgmisele lehele liikumist lehte laadida.
  • Code rida 22: Sulge Firefox.

Pane tähele, et selle koodilõigu tee on kirjutatud täpselt nii, nagu algses õpetuses seda näidatakse. Päris masinas tuleb kaldkriipsud paostada, näiteks „C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiilid\\xyzProfile.vaikimisi”.

Kuidas kasutada a Firefox Profiil sisse Selenium 4 koos FirefoxValikud

Mõlemad ülaltoodud näited kompileeruvad ainult vastu Selenium 2. Hiljem muutus kaks asja ja iga praegune õpetus kasutab uuemat vormi.

  • ProfilesIni kolis välja sisemine alampakett, seega on imporditav fail nüüd org.openqa.selenium.firefox.ProfilesIni.
  • . FirefoxJuht(FirefoxProfiil) konstruktor eemaldati. Profiil on kinnitatud FirefoxValikud ja valikud edastatakse draiverile.
  • Selenium 4 ajalõpu puhul kasutatakse väärtuse ja TimeUniti asemel java.time.Duration, seega implicitlyWait(5, TimeUnit.SECONDS) muutub implicitlyWait(Duration.ofSeconds(5)).

Allolev tabel seob iga pärandkõne selle asendusega.

Pärandkõne (Selenium 2) Praegune kõne (Selenium 3 ja 4)
import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.firefox.ProfilesIni;
uus FirefoxJuht (minuprofiil) valikud.setProfile(minuprofiil); uus FirefoxDraiver (valikud)
implicitlyWait(5, TimeUnit.SECONDS) implicitlyWait(Duration.ofSeconds(5))
System.setProperty geckodriveri jaoks Lahendatud automaatselt Selenium Juht

Praeguse versiooni põhjal ümber kirjutatud näide 1 näeb välja selline.

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

Profiiliotsing ise jääb samaks: ProfilesIni loeb endiselt profiles.ini faili Firefox application-data kaust ja getProfile tagastavad ikkagi nullväärtuse, kui nimi ei vasta profiilile, seega tasub enne draiveri käivitamist lisada nullväärtuskontroll. Sama options objekt sisaldab ka mujal kasutatavaid argumente, näiteks neid, mis on mõeldud brauseriakna maksimeerimine või suuruse muutmine.

Kuidas seada Firefox Profiili eelistused jaotises Selenium

Salvestatud profiil on vaid pool loost. Enamik automatiseeringuid vajab koodis rakendatud käputäit eelistusi, seega järgib sama käitumine komplekti mis tahes masinas. Meetod setPreference kirjutab need väärtused profiili koopiasse enne Firefox käivitab.

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

Allolevad eelistused hõlmavad juhtumeid, mis igapäevases skriptimises kõige sagedamini ette tulevad.

Eelistus Mida see kontrollib
brauser.download.folderList Süsteemi vaikekausta asemel kohandatud allalaadimiskausta kasutamiseks määrake väärtuseks 2.
brauser.download.dir Absoluutne tee Firefox salvestab allalaadimised kausta.
browser.helperApps.neverAsk.saveToDisk MIME tüübid salvestati allalaadimisdialoogi kuvamata.
dom.webnotifications.enabled Veebipõhiste push-teavituste kuvamise keelamiseks määrake väärtuseks „väär“.
intl.accept_languages Accept-Language päis, mis on kasulik lokaliseerimiskäivituste jaoks.
general.useragent.override Asendab brauseri saadetud kasutajaagendi stringi.

Tasub teada kahte piirangut. Eelistused tuleb määrata enne draiveri loomist, sest WebDriver kopeerib profiili käivitamisel ja hilisemad muudatused ignoreeritakse. WebDriver reserveerib ka väikese hulga eelistusi, mida see vajab brauseriga suhtlemiseks, ja kirjutab need üle olenemata sellest, milliseid te määrate. Kuna need väärtused asuvad profiilis, mitte skriptis, kanduvad need üle ka... brauseriteülene testimine käivitada ilma testkoodi muutmata.

ühine Firefox Profiilivead Selenium ja kuidas neid parandada

Profiiliprobleemid ilmnevad tavaliselt kompileerimisveana või brauseri avamisena valede sätetega. Tabelis on loetletud kõige sagedamini teatatud tõrked koos iga tõrke põhjustega.

Sümptom Põhjus Määrama
Konstruktor FirefoxJuht(FirefoxProfiil) on määratlemata Konstruktor eemaldati pärast Selenium 2. Mähi profiil sisse FirefoxValikud ja edastage selle asemel valikute objekt.
Faili org.openqa.selenium.firefox.internal.ProfilesIni importi ei õnnestu lahendada. Klass kolis sisemisest alampaketist välja. Impordi org.openqa.selenium.firefox.ProfilesIni.
NullPointerException saidil getProfile Profiilinimi ei vasta ühelegi kirjele failis profiles.ini. Ava profiilihaldur uuesti ja kopeeri nimi täpselt, sh suur- ja väiketähed.
Sinu Firefox Profiili ei saa laadida. See võib puududa või olla ligipääsmatu. Teine Firefox eksemplar juba omab profiili või on kausta tee vale. Sulge iga Firefox aknas ja seejärel kontrollige teed ülaltoodud asukohtadega.
Eelistusel pole mingit mõju See määrati pärast draiveri käivitamist või reserveeris selle WebDriver. Liiguta iga setPreference'i kõne ülespoole FirefoxJuhi konstruktor.

Kui brauser käivitub õigesti, aga skript ikkagi ebaõnnestub, ei ole probleemi põhjuseks tõenäoliselt profiil. erandite käsitlemine Selenium on sellest punktist tavaliselt kiireim marsruut.

KKK

Ei. FirefoxDraiver ei muuda kunagi olemasolevat profiili. See kopeerib profiilikataloogi ajutisse asukohta, rakendab WebDriveri nõutavad eelistused ja käivitab brauseri sellest koopiast, nii et teie salvestatud järjehoidjad ja paroolid jäävad puutumata.

Jah. Kõik profiili installitud laiendused laaditakse koos brauseriga. Samuti võite käivitamise ajal laienduse lisamiseks kutsuda funktsiooni profile.addExtension(new File(“path/to/extension.xpi”)), mis hoiab kettal oleva profiili puhtana.

Python puudub ProfilesIni vaste. Point FirefoxSelle asemel profiilikataloogis ja määra see enne draiveri loomist kataloogile options.profile. Selenium Python sidumised seejärel kloonivad selle kausta täpselt nii, nagu Java teeb.

Tehisintellektiga toetatud testimistööriistad võrdlevad edukate testide käigus jäädvustatud eelistusi praeguse profiiliga ja märgistavad triivi, näiteks muutunud puhverserveri või allalaadimiskausta. Mõned raamistikud kasutavad ka masinõpet, et tuvastada profiiliga seotud ebastabiilsust enne, kui see ehituse nurjub.

GitHubi koopia genereerib standardse teksti kiiresti, kuid see kiirgab sageli eemaldatud FirefoxJuht(FirefoxProfile) konstruktor, mis on õpitud vanemast koodist. Kinnitage alati soovituse kasutamine FirefoxOptions.setProfile ja praegune pakett enne selle kinnitamist.

Jah. Kasutage funktsiooni options.addArguments(“-headless”) koos funktsiooniga options.setProfile(profile). Profiil pakub eelistusi ja laiendusi täpselt nagu varem, kuna peata režiim muudab ainult seda, kuidas Firefox renderdab, mitte kuidas see oma profiilikataloogi loeb.

Kuna WebDriver töötab ajutise koopia peal ja kustutab selle seansi lõppedes. Muudatuste säilitamiseks muutke profiili käsitsi profiilihalduris või määrake koodis eelistused nii, et iga käivitamine algaks samast teadaolevast olekust.

Mitte alati, aga see aitab. Profiili kinnitamine FirefoxValikud saadavad eelistused koos võimete kasuliku koormusega, seega rakendab kaugsõlm sama allalaadimiste kausta, puhverserverit ja sertifikaatide haldamist nagu teie kohalik masin.

Võta see postitus kokku järgmiselt: