Selenium Firefox Profiili: Asennusopas

⚡ Älykäs yhteenveto

Firefox profiili tallentaa yhdelle selaimen käyttäjälle kuuluvat kirjanmerkit, salasanat, lisäosat ja asetukset, ja Selenium WebDriver voi ladata erillisen profiilin, joten jokainen automaattinen suoritus alkaa identtisestä, ennustettavasta selaintilasta.

  • 🔘 Profiilin perustiedot: A Firefox profiili sisältää yhden käyttäjän kirjanmerkit, tallennetut salasanat, lisäosat, varmenteet ja asetukset yhdessä kansiossa.
  • ☑️ Profiilin sijainti: Windows, Linux ja macOS jokainen tallentaa profiilikansiot eri polulle käyttäjähakemistossa.
  • Profiilin luominen: Sisäänrakennettu profiilinhallinta avautuu komennolla firefox.exe -p ja rakentaa puhtaan automaatioprofiilin viidessä vaiheessa.
  • 🧪 Code pääsy: ProfilesIni-luokka lukee profiles.ini-tiedoston ja getProfile palauttaa nimetyn profiilin FirefoxProfiiliobjekti.
  • 🛠️ Nykyinen syntaksi: Selenium 3 ja 4 kulkevat profiilin läpi FirefoxOptions.setProfile-tiedoston sijaan FirefoxKuljettajan rakentaja.
  • ⚠️ Asetukset: setPreference hallitsee latauskansiota, ilmoituksia, kieltä ja varmenteiden käsittelyä ennen selaimen käynnistymistä.

Selenium Firefox Profiilin määritysopas

Selenium Firefox Profiili

Firefox profiili on kokoelma asetuksia, mukautuksia, lisäosia ja muita mukautusasetuksia, jotka voidaan tehdä Firefox Browser. Voit mukauttaa Firefox profiilisi sopivaksi Selenium automaatiovaatimus.

Myös, Firefox tai mikä tahansa muu selain käsittelee SSL-varmenneasetuksia. Joten niiden automatisoinnissa on paljon järkeä yhdessä testin suorituskoodin kanssa.

Lyhyesti sanottuna profiili on käyttäjän henkilökohtaiset asetukset. Kun haluat käyttää luotettavaa automaatio on Firefox selaimen kanssa on suositeltavaa luoda erillinen profiili. Oma profiili pitää myös päivittäiset selaustietosi poissa testikäytöstä, mikä on ensimmäinen asia, joka kannattaa sulkea pois, kun Selenium Skripti toimii eri tavalla kahdella koneella.

Profiilikansiosi sijainti levyllä

Firefox profiili on aivan kuten eri käyttäjät käyttävät Firefox. Firefox tallentaa henkilökohtaisia ​​tietoja, kuten kirjanmerkkejä, salasanoja ja käyttäjäasetuksia, joita voidaan muokata, poistaa tai luoda profiilinhallinnan avulla.

Alla olevassa kuvakaappauksessa näkyy profiilikansio sellaisena kuin se näkyy levyllä. Kansio on nimetty profiilin mukaan ja sillä on satunnainen etuliite.

Firefox profiilikansio levyllä satunnaisella etuliitteellä

Profiilin sijainti on seuraava

  • varten Windows > C:\Käyttäjät\ \AppData\Roaming\Mozilla\Firefox\Profiilit\profiilin_nimi.oletus
  • varten Linux > ~/.mozilla/firefox/profiilin_nimi.default/
  • Mac OS X:ssä > ~/Kirjasto/Sovellustuki/Firefox/Profiilit/profiilin_nimi.default/

Jotta ajaa menestystä Selenium Testi, a Firefox profiilin tulee olla -

  • Helppo ladata
  • Välityspalvelimen asetukset tarvittaessa
  • Muut käyttäjäkohtaiset asetukset automaatiotarpeiden mukaan

Kuinka asettaa Firefox Profiilia käyttäjälle Selenium Testit

Katsotaanpa askel askeleelta, miten luodaan Firefox profiili.

Vaihe 1) Sulje Firefox selain

Ensimmäisessä vaiheessa sulje Firefox jos se on jo auki. Profiilinhallinta ei käynnisty, kun Firefox ikkuna on käynnissä.

Vaihe 2) Avaa Suorita (Windows näppäin + R) ja kirjoita firefox.exe –p

Suorita-valintaikkunan pitäisi näyttää alla olevan kuvakaappauksen kaltaiselta ennen kuin painat OK-painiketta.

Windows Suorita valintaikkuna kirjoittamalla firefox.exe -p -komento

Huomautus: Jos se ei avaudu, voit kokeilla lainausmerkeissä olevaa koko polkua.

  • 32-bittisessä järjestelmässä Windows: “C:\Ohjelmatiedostot\Mozilla” Firefox\firefox.exe” –p
  • 64-bittisessä järjestelmässä Windows (32-bittinen Firefox): “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p

Vaihe 3) Valitse käyttäjäprofiili

Nyt valintaikkuna nimeltä Firefox avautuu, kuten alla näkyy.

Firefox Valitse käyttäjäprofiili -valintaikkuna, jossa luetellaan olemassa olevat profiilit

Vaihe 4) Luo profiili

Käynnistä ohjattu toiminto valitsemalla seuraavassa kuvakaappauksessa näkyvä Luo profiili -vaihtoehto.

Profiilin luontitoiminnon aloitusnäyttö Firefox profiilinhallinta

Valitse nyt ikkunasta vaihtoehto Luo profiili ja ohjattu toiminto avautuu. Napsauta seuraavaa.

Vaihe 5) Anna profiilisi nimi

Kirjoita automaatioprofiilin nimi alla korostettuun kenttään ja lopeta ohjattu toiminto.

Uuden syöttäminen Firefox profiilin nimi profiilin luontitoiminnossa

Nyt profiilisi on valmis, voit valita profiilisi ja avata FirefoxTästä eteenpäin profiili toimii kuten mikä tahansa muu selainistunto, joten ensimmäinen WebDriver-skripti ajaa sitä vastaan ​​muuttumattomana.

Huomaat, että uusi Firefox ikkuna ei näytä mitään kirjanmerkkejäsi ja suosikkikuvakkeitasi.

Huomautus: Viimeksi valittu profiili latautuu automaattisesti seuraavalla kerralla. Firefox tuoda markkinoille. Sinun on käynnistettävä profiilinhallinta uudelleen, jos haluat vaihtaa profiileja.

Automation Script for Selenium

Kun profiili on luotu, seuraava vaihe on ladata se koodista. Päästäksesi käsiksi juuri luotuun profiiliin Firefox profiilissa Selenium WebDriver-ohjelmiston testauksessa meidän on käytettävä WebDriverin sisäänrakennettua ProfilesIni-luokkaa ja sen getProfile-metodia alla olevan mukaisesti.

⚠️ Versiohuomautus: tämän osion katkelmat ovat alkuperäisiä Selenium 2. lomake. Nykyisessä muodossa Selenium julkaisuissa, joissa luokka asuu org.openqa.selenium.firefox.ProfilesIni - .sisäinen alipaketti pudotettiin — ja profiili luovutetaan kuljettajalle kautta FirefoxVaihtoehdot. Katso FirefoxNykyaikaisen vastineen vaihtoehdot-osio alla.

Selenium profiilin koodi

Tämä on koodi profiilin toteuttamiseksi, joka voidaan upottaa Selenium koodi.

ProfilesIni profile = new ProfilesIni();

// tämä luo objektin Firefox profiili

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

// tämä alustaa Firefox kuljettaja

WebDriver driver = new FirefoxDriver(myprofile)

Katsotaanpa tämän koodin toteutusta seuraavissa esimerkeissä.

Firefox Profiiliesimerkki 1

Ensimmäinen esimerkki lataa profiilin nimen perusteella. Alla oleva kuvakaappaus näyttää saman komentosarjan editorin sisällä.

Firefox Profiiliesimerkki 1 -skripti lataa profiilin nimen mukaan editoriin

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

}

Selitys koodille

Alla on koodin selitys rivi riviltä.

  • Code rivi 2-7: Ensin meidän on tuotava paketti, jota tarvitaan funktion suorittamiseen Selenium koodi.
  • Code rivi 8: Luo julkinen luokka “FirefoxProfiili."
  • Code rivi 9: Tee olio (sinulla on oltava perustiedot OOP-käsitteistä).
  • Code rivi 10-11: Meidän täytyy alustaa Firefox profiili, jonka objekti on myprofile.
  • Code rivi 13: Luo objekti kohteelle Firefox.
  • Code rivi 15: Suurenna ikkuna.
  • Code rivi 17: driver.get-tiedostoa käytetään navigointiin annettuun kohteeseen URL.
  • Code rivi 19: Aikakatkaisun asetusta käytetään odottamaan jonkin aikaa, jotta selain voi ladata sivun ennen seuraavalle sivulle siirtymistä.
  • Code rivi 21: Sulje Firefox.

Katsotaanpa vielä yksi esimerkki.

Firefox Profiiliesimerkki 2

Toinen esimerkki ohittaa profiles.ini-tiedoston ja osoittaa suoraan profiilikansioon, kuten editorin kuvakaappaus osoittaa.

Firefox Profiiliesimerkin 2 skripti osoittaa FirefoxProfiili kansiopolussa

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

Selitys koodille

Alla on koodin selitys rivi riviltä.

  • Code rivi 1-6: Ensin meidän on tuotava paketti, jota tarvitaan funktion suorittamiseen Selenium koodi.
  • Code rivi 8: Luo julkinen luokka FirefoxProfiili2.
  • Code rivi 12: Tee myprofile-objektista viittaamalla tarkkaan polkuun.
  • Code rivi 14: Luo objekti kohteelle Firefox.
  • Code rivi 16: Suurenna ikkuna.
  • Code rivi 18: driver.get-tiedostoa käytetään navigointiin annettuun kohteeseen URL.
  • Code rivi 20: Aikakatkaisun asetusta käytetään odottamaan jonkin aikaa, jotta selain voi ladata sivun ennen seuraavalle sivulle siirtymistä.
  • Code rivi 22: Sulje Firefox.

Huomaa, että tämän koodinpätkän polku on kirjoitettu täsmälleen samalla tavalla kuin alkuperäisessä tutoriaalissa se näytetään. Oikealla koneella kenoviivat on vaihdettava koodinvaihtomerkillä, esimerkiksi “C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Profiilit\\xyzProfile.default”.

Kuinka käyttää Firefox Profiili sisään Selenium 4 kanssa FirefoxVaihtoehdot

Molemmat yllä olevat esimerkit kääntyvät vain vastaan Selenium 2. Kaksi asiaa muuttui jälkikäteen, ja jokainen nykyinen opetusohjelma käyttää uudempaa muotoa.

  • ProfilesIni muutti pois sisäinen alipaketti, joten tuonti on nyt org.openqa.selenium.firefox.ProfilesIni.
  • FirefoxKuljettaja(FirefoxProfiili) -rakentaja poistettiin. Profiili on liitetty FirefoxOptions-objekti ja options-objekti välitetään ajurille.
  • Selenium Neljä aikakatkaisua käyttävät java.time.Duration-muuttujaa arvon ja TimeUnit-muuttujan sijaan, joten implicitlyWait(5, TimeUnit.SECONDS) muuttuu implicitlyWait(Duration.ofSeconds(5)) -muuttujaksi.

Alla oleva taulukko yhdistää jokaisen vanhan kutsun sen korvaavaan kutsuun.

Perinteinen puhelu (Selenium 2) Nykyinen puhelu (Selenium 3 ja 4)
import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.firefox.ProfilesIni;
uusi FirefoxKuljettaja(profiilini) asetukset.setProfile(omaprofiili); new FirefoxOhjain (lisävarusteet)
implicitlyWait(5, AikaYksikkö.SEKUNNIT) implisiittisestiOdota(Kesto.sekunteja(5))
System.setProperty geckodriverille Ratkaistu automaattisesti Selenium Johtaja

Uudelleenkirjoitettuna nykyistä julkaisua vasten, esimerkki 1 näyttää tältä.

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

Profiilihaku itsessään ei muutu: ProfilesIni lukee edelleen profiles.ini-tiedoston Firefox application-data-kansio ja getProfile palauttavat edelleen null-arvon, kun nimi ei vastaa profiilia, joten null-tarkistus kannattaa lisätä ennen ajurin käynnistymistä. Sama options-objekti sisältää myös muualla käytetyt argumentit, kuten esimerkiksi selainikkunan maksimointi tai koon muuttaminen.

Kuinka asettaa Firefox Profiiliasetukset kohdassa Selenium

Tallennettu profiili on vasta puolet tarinasta. Useimmat automaatiot tarvitsevat muutamia koodiin lisättyjä asetuksia, jotta sama toiminta jatkuu millä tahansa koneella. setPreference-metodi kirjoittaa nämä arvot profiilikopioon ennen Firefox käynnistää.

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

Alla olevat asetukset kattavat tapaukset, joita esiintyy useimmin päivittäisessä skriptauksessa.

Etusija Mitä se hallitsee
browser.download.folderList Aseta arvoksi 2 käyttääksesi mukautettua latauskansiota järjestelmän oletuskansion sijaan.
selain.lataus.hakemisto Absoluuttinen polku Firefox tallentaa lataukset kansioon.
browser.helperApps.neverAsk.saveToDisk MIME-tyypit tallennettiin näyttämättä latausikkunaa.
dom.webnotifications.enabled Aseta arvoksi epätosi, jos haluat estää verkkoilmoitusten näyttämisen.
kansainväliset_hyväksytyt_kielet Accept-Language-otsikko, hyödyllinen lokalisointiajoissa.
yleinen.käyttäjä.ohittaa Korvaa selaimen lähettämän käyttäjäagenttimerkkijonon.

Kaksi rajoitusta on hyvä tietää. Asetukset on määritettävä ennen ajurin luomista, koska WebDriver kopioi profiilin käynnistyksen yhteydessä ja myöhemmät muutokset ohitetaan. WebDriver varaa myös pienen joukon asetuksia, joita se tarvitsee kommunikoidakseen selaimen kanssa, ja se korvaa ne millä tahansa määrittämälläsi asetuksella. Koska nämä arvot sijaitsevat profiilissa eivätkä komentosarjassa, ne siirtyvät myös... selainten välinen testaus ajaa ilman muutoksia testikoodiin.

Yhteinen Firefox Profiilivirheet kohdassa Selenium ja kuinka korjata ne

Profiiliongelmat ilmenevät yleensä käännösvirheenä tai selaimen avautuessa väärillä asetuksilla. Taulukossa luetellaan useimmin raportoidut virheet ja niiden syyt.

Oire Aiheuttaa Korjata
Rakentaja FirefoxKuljettaja(FirefoxProfiili) on määrittelemätön Rakentaja poistettiin sen jälkeen, kun Selenium 2. Kiedo profiili sisään FirefoxOptions ja välitä sen sijaan options-objekti.
Tiedoston org.openqa.selenium.firefox.internal.ProfilesIni tuontia ei voitu ratkaista. Luokka siirrettiin pois sisäisestä alipaketista. Tuo org.openqa.selenium.firefox.ProfilesIni.
NullPointerException getProfilessa Profiilin nimi ei vastaa mitään merkintää profiles.ini-tiedostossa. Avaa profiilinhallinta uudelleen ja kopioi nimi tarkasti, kirjainkoko mukaan lukien.
Sinun Firefox Profiilia ei voida ladata. Se saattaa puuttua tai olla käyttämättä. Toinen Firefox instanssilla on jo profiili tai kansion polku on väärä. Sulje joka Firefox ikkuna ja tarkista sitten polku yllä lueteltuja sijainteja vasten.
Mieltymyksellä ei ole vaikutusta Se asetettiin ajurin käynnistyksen jälkeen tai WebDriver varaa sen. Siirrä jokainen setPreference-kutsu yläpuolelle FirefoxKuljettajan rakentaja.

Jos selain käynnistyy oikein, mutta komentosarja epäonnistuu silti sen jälkeen, profiili ei todennäköisesti ole syy. poikkeusten käsittely Selenium on yleensä nopein reitti tuosta pisteestä.

UKK

Ei. FirefoxDriver ei koskaan muokkaa olemassa olevaa profiilia. Se kopioi profiilihakemiston väliaikaiseen sijaintiin, ottaa käyttöön WebDriverin vaatimat asetukset ja käynnistää selaimen tästä kopiosta, joten tallennetut kirjanmerkkisi ja salasanasi pysyvät koskemattomina.

Kyllä. Kaikki profiiliin asennetut laajennukset latautuvat selaimen mukana. Voit myös kutsua profile.addExtension(new File(“path/to/extension.xpi”)) liittääksesi sellaisen suorituksen aikana, mikä pitää levyllä olevan profiilin puhtaana.

Python ei ole ProfilesIni-vastinetta. Piste FirefoxProfile sen sijaan profiilihakemistossa ja määritä se sitten options.profile-tiedostoon ennen ajurin kääntämistä. Selenium Python sidokset kloonaa sitten kyseinen kansio täsmälleen samalla tavalla Java ei.

Tekoälyllä avustetut testityökalut vertaavat läpäisevien ajojen aikana tallennettuja asetuksia nykyiseen profiiliin ja merkitsevät muuttuneen välityspalvelimen tai latauskansion. Jotkut kehykset käyttävät myös koneoppimista havaitakseen profiiliin liittyviä epävakavuuksia ennen kuin se epäonnistuu koonnissa.

GitHub Copilot luo mallin nopeasti, mutta se usein lähettää poistetun FirefoxKuljettaja(FirefoxProfile) -konstruktori, joka on opittu vanhemmasta koodista. Vahvista aina ehdotuksen käyttö FirefoxOptions.setProfile ja nykyinen paketti ennen sen commitointia.

Kyllä. Kutsutaan funktiota options.addArguments(“-headless”) yhdessä funktion options.setProfile(profile) kanssa. Profiili tarjoaa asetukset ja laajennukset täsmälleen kuten ennenkin, koska headless-tila muuttaa vain sitä, miten Firefox renderöintitapa, ei se, miten se lukee profiilihakemistonsa.

Koska WebDriver käsittelee väliaikaista kopiota ja poistaa sen istunnon päätyttyä, voit säilyttää muutokset muokkaamalla profiilia manuaalisesti profiilien hallinnassa tai määrittämällä asetukset koodissa niin, että jokainen suoritus alkaa samasta tunnetusta tilasta.

Ei aina, mutta se auttaa. Profiilin liittäminen FirefoxAsetukset toimitetaan ominaisuushyötykuorman mukana, joten etäsolmu käyttää samaa latauskansiota, välityspalvelinta ja varmenteiden käsittelyä kuin paikallinen kone.

Tiivistä tämä viesti seuraavasti: