Selenium Firefox Προφίλ: Οδηγός εγκατάστασης
⚡ Έξυπνη Σύνοψη
Firefox Το προφίλ αποθηκεύει τους σελιδοδείκτες, τους κωδικούς πρόσβασης, τα πρόσθετα και τις προτιμήσεις που ανήκουν σε έναν χρήστη του προγράμματος περιήγησης και Selenium Το WebDriver μπορεί να φορτώσει ένα ειδικό προφίλ, έτσι ώστε κάθε αυτοματοποιημένη εκτέλεση να ξεκινά από μια πανομοιότυπη, προβλέψιμη κατάσταση προγράμματος περιήγησης.

Selenium Firefox Προφίλ ⬇️
Firefox Το προφίλ είναι η συλλογή ρυθμίσεων, προσαρμογών, πρόσθετων και άλλων ρυθμίσεων εξατομίκευσης που μπορούν να γίνουν στο Firefox Browser. Μπορείτε να προσαρμόσετε Firefox προφίλ που ταιριάζει σε εσάς Selenium απαίτηση αυτοματισμού.
Έτσι, Firefox ή οποιοδήποτε άλλο πρόγραμμα περιήγησης χειρίζεται τις ρυθμίσεις πιστοποιητικών SSL. Έτσι, η αυτοματοποίησή τους έχει πολύ νόημα μαζί με τον κώδικα εκτέλεσης της δοκιμής.
Με λίγα λόγια, ένα προφίλ είναι οι προσωπικές ρυθμίσεις ενός χρήστη. Όταν θέλετε να εκτελέσετε μια αξιόπιστη αυτοματοποίηση για μια Firefox πρόγραμμα περιήγησης, συνιστάται να δημιουργήσετε ένα ξεχωριστό προφίλ. Ένα ειδικό προφίλ κρατά επίσης τα δεδομένα καθημερινής περιήγησής σας εκτός της δοκιμαστικής εκτέλεσης, κάτι που είναι το πρώτο πράγμα που πρέπει να αποκλείσετε όταν Selenium Το σενάριο συμπεριφέρεται διαφορετικά σε δύο μηχανήματα.
Θέση του φακέλου του προφίλ σας στο δίσκο
Firefox Το προφίλ είναι ακριβώς όπως χρησιμοποιούν διαφορετικοί χρήστες Firefox. Firefox Αποθηκεύει προσωπικές πληροφορίες όπως σελιδοδείκτες, κωδικούς πρόσβασης και προτιμήσεις χρήστη, τις οποίες μπορείτε να επεξεργαστείτε, να διαγράψετε ή να δημιουργήσετε χρησιμοποιώντας τον διαχειριστή προφίλ.
Το παρακάτω στιγμιότυπο οθόνης δείχνει έναν φάκελο προφίλ όπως εμφανίζεται στον δίσκο, ο οποίος πήρε το όνομά του από το προφίλ με ένα τυχαίο πρόθεμα.
Η τοποθεσία του προφίλ είναι η εξής
- Για Windows > C:\Χρήστες\ \AppData\Roaming\Mozilla\Firefox\Profiles\όνομα_προφίλ.προεπιλογή
- Για Linux > ~/.mozilla/firefox/όνομα_προφίλ.προεπιλογή/
- Για Mac OS X > ~/Βιβλιοθήκη/Υποστήριξη εφαρμογών/Firefox/Profiles/profile_name.default/
Για να τρέξει μια επιτυχημένη Selenium Δοκιμή, α Firefox το προφίλ πρέπει να είναι -
- Εύκολη φόρτωση
- Ρυθμίσεις διακομιστή μεσολάβησης εάν απαιτείται
- Άλλες ρυθμίσεις για τον χρήστη που βασίζονται στις ανάγκες αυτοματισμού
Πώς να ρυθμίσετε Firefox Προφίλ για Selenium Δοκιμές
Ας δούμε βήμα προς βήμα πώς να δημιουργήσουμε ένα Firefox προφίλ.
Βήμα 1) Κλείστε το Firefox πρόγραμμα περιήγησης
Στο πρώτο βήμα, κλείστε Firefox αν είναι ήδη ανοιχτό. Ο διαχειριστής προφίλ δεν θα ξεκινήσει ενώ υπάρχει Firefox το παράθυρο τρέχει.
Βήμα 2) Open Run (Windows πλήκτρο + R) και πληκτρολογήστε firefox.exe –p
Το παράθυρο διαλόγου Εκτέλεση θα πρέπει να μοιάζει με το παρακάτω στιγμιότυπο οθόνης πριν πατήσετε OK.
Σημείωση: Εάν δεν ανοίξει, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε την πλήρη διαδρομή μέσα σε εισαγωγικά.
- Σε 32 bit Windows: “C:\Program Files\Mozilla Firefox\firefox.exe” –p
- Σε 64 bit Windows (32-bit Firefox): "C:\Program Files (x86)\Mozilla Firefox\firefox.exe” –p
Βήμα 3) Επιλέξτε προφίλ χρήστη
Τώρα, ένα παράθυρο διαλόγου με το όνομα Firefox θα ανοίξει, όπως φαίνεται παρακάτω.
Βήμα 4) Δημιουργία προφίλ
Επιλέξτε την επιλογή Δημιουργία προφίλ που εμφανίζεται στο επόμενο στιγμιότυπο οθόνης για να ξεκινήσετε τον οδηγό.
Τώρα, επιλέξτε Δημιουργία προφίλ από το παράθυρο και θα ανοίξει ένας οδηγός. Κάντε κλικ στο επόμενο.
Βήμα 5) Δώστε το όνομα του προφίλ σας
Πληκτρολογήστε ένα όνομα για το προφίλ αυτοματισμού στο πεδίο που επισημαίνεται παρακάτω και ολοκληρώστε τον οδηγό.
Τώρα το προφίλ σας είναι έτοιμο, μπορείτε να επιλέξετε το προφίλ σας και να το ανοίξετε FirefoxΑπό εδώ, το προφίλ συμπεριφέρεται όπως οποιαδήποτε άλλη συνεδρία προγράμματος περιήγησης, επομένως ένα πρώτο σενάριο WebDriver θα στραφεί εναντίον του αμετάβλητο.
Θα παρατηρήσετε ότι το νέο Firefox Το παράθυρο δεν θα εμφανίζει κανέναν από τους Σελιδοδείκτες και τα Αγαπημένα σας εικονίδια.
Σημείωση: Το τελευταίο επιλεγμένο προφίλ θα φορτωθεί αυτόματα την επόμενη φορά. Firefox εκτόξευση. Εάν θέλετε να αλλάξετε προφίλ, θα χρειαστεί να κάνετε επανεκκίνηση του διαχειριστή προφίλ.
Σενάριο αυτοματισμού για Selenium
Αφού δημιουργηθεί το προφίλ, το επόμενο βήμα είναι να το φορτώσετε από τον κώδικα. Για να αποκτήσετε πρόσβαση στο νέο προφίλ Firefox προφίλ σε ένα Selenium Για τη δοκιμή του λογισμικού WebDriver, πρέπει να χρησιμοποιήσουμε την ενσωματωμένη κλάση ProfilesIni του WebDriver και τη μέθοδό της getProfile όπως φαίνεται παρακάτω.
⚠️ Σημείωση έκδοσης: τα αποσπάσματα σε αυτήν την ενότητα είναι τα πρωτότυπα Selenium 2η μορφή. Στην τρέχουσα Selenium απελευθερώνει την τάξη που ζει μέσα org.openqa.selenium.firefox.ProfilesIni - ο .εσωτερικός το υπο-πακέτο απορρίφθηκε — και το προφίλ παραδίδεται στον οδηγό μέσω FirefoxΕπιλογές. Δείτε το FirefoxΗ ενότητα επιλογών παρακάτω για το σύγχρονο ισοδύναμο.
Selenium κωδικός για το προφίλ
Αυτός είναι ένας κώδικας για την υλοποίηση ενός προφίλ, ο οποίος μπορεί να ενσωματωθεί στο Selenium κώδικας.
ProfilesIni profile = new ProfilesIni();
// αυτό θα δημιουργήσει ένα αντικείμενο για το Firefox λογαριασμό σας
FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// αυτό θα εκκινήσει το Firefox οδηγός
WebDriver driver = new FirefoxDriver(myprofile)
Ας δούμε την υλοποίηση αυτού του κώδικα στα ακόλουθα παραδείγματα.
Firefox Παράδειγμα προφίλ 1
Το πρώτο παράδειγμα φορτώνει ένα προφίλ με βάση το όνομα. Το παρακάτω στιγμιότυπο οθόνης δείχνει το ίδιο σενάριο μέσα στον επεξεργαστή.
// 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(); } }
Επεξήγηση για τον κώδικα
Παρακάτω είναι η εξήγηση του κώδικα γραμμή προς γραμμή.
- Code γραμμή 2-7: Πρώτα απ 'όλα πρέπει να εισαγάγουμε το πακέτο που απαιτείται για την εκτέλεση του Selenium κώδικας.
- Code γραμμή 8: Δημιουργήστε μια δημόσια τάξη "FirefoxΠροφίλ."
- Code γραμμή 9: Δημιουργήστε ένα αντικείμενο (πρέπει να έχετε βασικές γνώσεις των εννοιών OOP).
- Code γραμμή 10-11: Πρέπει να κάνουμε αρχικοποίηση Firefox προφίλ με το αντικείμενο του προφίλ μου.
- Code γραμμή 13: Δημιουργία αντικειμένου για Firefox.
- Code γραμμή 15: Μεγιστοποίηση παραθύρου.
- Code γραμμή 17: το driver.get χρησιμοποιείται για την πλοήγηση στο δεδομένο URL.
- Code γραμμή 19: Η ρύθμιση χρονικού ορίου χρησιμοποιείται για να περιμένει κάποιος χρόνος, ώστε το πρόγραμμα περιήγησης να φορτώσει τη σελίδα πριν προχωρήσει στην επόμενη σελίδα.
- Code γραμμή 21: Κλείσιμο Firefox.
Ας δούμε ένα ακόμη παράδειγμα.
Firefox Παράδειγμα προφίλ 2
Το δεύτερο παράδειγμα παρακάμπτει το profiles.ini και δείχνει απευθείας στον φάκελο προφίλ, όπως φαίνεται στο στιγμιότυπο οθόνης του προγράμματος επεξεργασίας.
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(); }
Επεξήγηση για τον κώδικα
Παρακάτω είναι η εξήγηση του κώδικα γραμμή προς γραμμή.
- Code γραμμή 1-6: Πρώτα απ 'όλα πρέπει να εισαγάγουμε το πακέτο που απαιτείται για την εκτέλεση του Selenium κώδικας.
- Code γραμμή 8: Δημιουργήστε μια δημόσια τάξη FirefoxΠροφίλ2.
- Code γραμμή 12: Δημιουργήστε το αντικείμενο του myprofile αναφερόμενοι στην ακριβή διαδρομή.
- Code γραμμή 14: Δημιουργία αντικειμένου για Firefox.
- Code γραμμή 16: Μεγιστοποίηση παραθύρου.
- Code γραμμή 18: το driver.get χρησιμοποιείται για την πλοήγηση στο δεδομένο URL.
- Code γραμμή 20: Η ρύθμιση χρονικού ορίου χρησιμοποιείται για να περιμένει κάποιος χρόνος, ώστε το πρόγραμμα περιήγησης να φορτώσει τη σελίδα πριν προχωρήσει στην επόμενη σελίδα.
- Code γραμμή 22: Κλείσιμο Firefox.
Σημειώστε ότι η διαδρομή σε αυτό το απόσπασμα είναι γραμμένη ακριβώς όπως την δείχνει το αρχικό σεμινάριο. Σε έναν πραγματικό υπολογιστή, οι ανάστροφες καθέτους πρέπει να έχουν χαρακτήρα διαφυγής, για παράδειγμα "C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Προφίλ\\xyzProfile.default”.
Πώς να χρησιμοποιήσετε Firefox προφίλ Selenium 4 με FirefoxΕπιλογές
Και τα δύο παραπάνω παραδείγματα μεταγλωττίζονται μόνο σε Selenium 2. Δύο πράγματα άλλαξαν αργότερα, και κάθε τρέχον σεμινάριο χρησιμοποιεί τη νεότερη μορφή.
- Το ProfilesIni μετακινήθηκε από το εσωτερικός υποπακέτο, επομένως η εισαγωγή είναι τώρα org.openqa.selenium.firefox.ProfilesIni.
- The FirefoxΟδηγός(Firefox(Ο κατασκευαστής προφίλ) αφαιρέθηκε. Το προφίλ είναι συνδεδεμένο σε ένα Firefoxαντικείμενο Options και το αντικείμενο options διαβιβάζεται στον οδηγό.
- Selenium 4 χρονικά όρια λαμβάνουν ένα java.time.Duration αντί για μια τιμή συν ένα TimeUnit, επομένως το implicitlyWait(5, TimeUnit.SECONDS) γίνεται implicitlyWait(Duration.ofSeconds(5)).
Ο παρακάτω πίνακας αντιστοιχίζει κάθε κλήση παλαιού τύπου με την αντικατάστασή της.
| Κλήση παλαιού τύπου (Selenium 2) | Τρέχουσα κλήση (Selenium 3 και 4) |
|---|---|
| εισαγωγή org.openqa.selenium.firefox.internal.ProfilesIni; | εισαγωγή org.openqa.selenium.firefox.ProfilesIni; |
| νέος FirefoxΟδηγός (το προφίλ μου) | options.setProfile(myprofile); νέο FirefoxΟδηγός (επιλογές) |
| implicitlyWait(5, Μονάδα Χρόνου.ΔΕΥΤΕΡΟΛΕΠΤΑ) | implicitlyWait(ΔιάρκειαΔευτερόλεπτων(5)) |
| System.setProperty για το geckodriver | Επιλύθηκε αυτόματα από Selenium Manager |
Ξαναγραμμένο σε σχέση με μια τρέχουσα έκδοση, το Παράδειγμα 1 μοιάζει με αυτό.
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(); } }
Η ίδια η αναζήτηση προφίλ δεν έχει αλλάξει: Το ProfilesIni εξακολουθεί να διαβάζει το profiles.ini από το Firefox Ο φάκελος application-data και το getProfile εξακολουθούν να επιστρέφουν null όταν το όνομα δεν ταιριάζει με ένα προφίλ, επομένως αξίζει να προσθέσετε έναν έλεγχο null πριν από την εκκίνηση του προγράμματος οδήγησης. Το ίδιο αντικείμενο options φέρει επίσης τα ορίσματα που χρησιμοποιούνται αλλού, όπως αυτά για μεγιστοποίηση ή αλλαγή μεγέθους του παραθύρου του προγράμματος περιήγησης.
Πώς να ρυθμίσετε Firefox Προτιμήσεις προφίλ σε Selenium
Ένα αποθηκευμένο προφίλ είναι μόνο η μισή ιστορία. Οι περισσότερες αυτοματοποιήσεις απαιτούν μια χούφτα προτιμήσεων που εφαρμόζονται στον κώδικα, επομένως η ίδια συμπεριφορά ακολουθεί τη σουίτα σε οποιοδήποτε μηχάνημα. Η μέθοδος setPreference γράφει αυτές τις τιμές στο αντίγραφο του προφίλ πριν Firefox ξεκινά.
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);
Οι παρακάτω προτιμήσεις καλύπτουν τις περιπτώσεις που εμφανίζονται συχνότερα στην καθημερινή σύνταξη σεναρίων.
| Προτίμηση | Τι ελέγχει |
|---|---|
| browser.download.folderList | Ορίστε σε 2 για να χρησιμοποιήσετε έναν προσαρμοσμένο φάκελο λήψεων αντί για τον προεπιλεγμένο φάκελο συστήματος. |
| browser.download.dir | Η απόλυτη διαδρομή Firefox αποθηκεύει τις λήψεις σε. |
| browser.helperApps.neverAsk.saveToDisk | Οι τύποι MIME αποθηκεύτηκαν χωρίς να εμφανίζεται το παράθυρο διαλόγου λήψης. |
| οικ. διαδικτυακές ειδοποιήσεις. ενεργοποιημένη | Ορίστε την τιμή σε false για να απενεργοποιήσετε τις ειδοποιήσεις push στο web. |
| intl.accept_languages | Η κεφαλίδα Accept-Language, χρήσιμη για εκτελέσεις τοπικής προσαρμογής. |
| general.usagent.override | Αντικαθιστά τη συμβολοσειρά παράγοντα χρήστη που αποστέλλεται από το πρόγραμμα περιήγησης. |
Αξίζει να γνωρίζετε δύο όρια. Οι προτιμήσεις πρέπει να οριστούν πριν από τη δημιουργία του προγράμματος οδήγησης, επειδή το WebDriver αντιγράφει το προφίλ κατά την εκκίνηση και οι μεταγενέστερες αλλαγές αγνοούνται. Το WebDriver διατηρεί επίσης ένα μικρό σύνολο προτιμήσεων που χρειάζεται για να επικοινωνήσει με το πρόγραμμα περιήγησης και αντικαθιστά ό,τι και αν αντιστοιχίσετε. Επειδή αυτές οι τιμές βρίσκονται στο προφίλ και όχι στο σενάριο, μεταφέρονται επίσης σε ένα δοκιμή cross browser εκτελείται χωρίς καμία αλλαγή στον κώδικα δοκιμής.
Κοινός Firefox Σφάλματα προφίλ σε Selenium και πώς να τα διορθώσετε
Τα προβλήματα προφίλ συνήθως εμφανίζονται ως σφάλμα μεταγλώττισης ή ως άνοιγμα προγράμματος περιήγησης με λανθασμένες ρυθμίσεις. Ο πίνακας παραθέτει τις αποτυχίες που αναφέρονται συχνότερα, μαζί με την αιτία της καθεμίας.
| Σύμπτωμα | Αιτία | σταθερός |
|---|---|---|
| Ο κατασκευαστής FirefoxΟδηγός(FirefoxΤο προφίλ) δεν έχει οριστεί | Ο κατασκευαστής αφαιρέθηκε μετά Selenium 2. | Τυλίξτε το προφίλ μέσα FirefoxΕπιλογές και να περάσει το αντικείμενο επιλογών αντ' αυτού. |
| Δεν είναι δυνατή η επίλυση του import org.openqa.selenium.firefox.internal.ProfilesIni | Η κλάση μετακινήθηκε εκτός του εσωτερικού υποπακέτου. | Εισαγωγή του αρχείου org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException στο getProfile | Το όνομα του προφίλ δεν ταιριάζει με καμία καταχώρηση στο profiles.ini. | Ανοίξτε ξανά τον διαχειριστή προφίλ και αντιγράψτε ακριβώς το όνομα, συμπεριλαμβανομένων των πεζών-κεφαλαίων. |
| Σας Firefox Δεν είναι δυνατή η φόρτωση του προφίλ. Ενδέχεται να λείπει ή να μην είναι προσβάσιμο. | Άλλος Firefox Η παρουσία περιέχει ήδη το προφίλ ή η διαδρομή του φακέλου είναι λανθασμένη. | Κλείσιμο κάθε Firefox παράθυρο και, στη συνέχεια, επαληθεύστε τη διαδρομή σε σχέση με τις τοποθεσίες που αναφέρονται παραπάνω. |
| Μια προτίμηση δεν έχει καμία επίδραση | Ορίστηκε μετά την εκκίνηση του προγράμματος οδήγησης ή το WebDriver το δεσμεύει. | Μετακινήστε κάθε κλήση setPreference πάνω από το FirefoxΚατασκευαστής προγράμματος οδήγησης. |
Εάν το πρόγραμμα περιήγησης ξεκινήσει σωστά αλλά το σενάριο εξακολουθεί να αποτυγχάνει μετά, πιθανότατα δεν είναι το προφίλ η αιτία. Επεξεργασία χειρισμός εξαιρέσεων σε Selenium είναι συνήθως η ταχύτερη διαδρομή από εκείνο το σημείο.







