geckodriver selenium tutorial
Tutorial GeckoDriver Selenium: Μάθετε πώς να χρησιμοποιείτε το πρόγραμμα οδήγησης Gecko (Marionette) στο Selenium
Για να καταλάβουμε τι είναι το GeckoDriver, αρχικά πρέπει να γνωρίζουμε για τη μηχανή του Gecko και του προγράμματος περιήγησης στο Web. Αυτό το σεμινάριο καλύπτει σχεδόν όλες τις δυνατότητες που σχετίζονται με το GeckoDriver, δίνοντάς σας έτσι μια πλήρη επισκόπηση του.
Αρχικά, ας μάθουμε πρώτα τι είναι το Gecko και τι είναι μια μηχανή περιήγησης στο Web;
Τι θα μάθετε:
- Τι είναι το Gecko;
- Τι είναι η μηχανή προγράμματος περιήγησης στο Web;
- Τι είναι το GeckoDriver;
- Γιατί το Selenium χρειάζεται το GeckoDriver;
- Πώς να χρησιμοποιήσετε το GeckoDriver στο Selenium Project;
- GeckoDriver και TestNG
- Βήματα για να προσθέσετε μια διαδρομή στην περιβαλλοντική μεταβλητή PATH του συστήματος
- Ζητήματα χωρίς πρόγραμμα οδήγησης Gecko
- Πρόσθετες πληροφορίες για το GeckoDriver
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Τι είναι το Gecko;
Το Gecko είναι μια μηχανή προγράμματος περιήγησης ιστού. Υπάρχουν πολλές εφαρμογές που απαιτούν το Gecko. Συγκεκριμένα, οι εφαρμογές που αναπτύσσονται από το Mozilla Foundation και το Mozilla Corporation. Το Gecko είναι επίσης ανάγκη για πολλά προγράμματα λογισμικού ανοιχτού κώδικα. Το Gecko είναι γραμμένο σε C ++ και JavaScript.
Οι τελευταίες εκδόσεις γράφονται επίσης στο Rust. Το Gecko είναι μια δωρεάν μηχανή αναζήτησης ανοιχτού κώδικα.
Τι είναι η μηχανή προγράμματος περιήγησης στο Web;
Το Web Browser Engine δεν είναι παρά ένα πρόγραμμα λογισμικού. Η κύρια λειτουργία αυτού του προγράμματος είναι η συλλογή του περιεχομένου (όπως HTML, XML, εικόνες) & μορφοποίηση των πληροφοριών (όπως CSS) και εμφάνιση αυτού του μορφοποιημένου περιεχομένου στην οθόνη. Το Web Browser Engine ονομάζεται επίσης Layout Engine ή Rendering Engine.
Εφαρμογές όπως προγράμματα περιήγησης στο Web, πελάτες email, αναγνώστες e-book, συστήματα βοήθειας on-line κ.λπ. χρειάζονται εμφάνιση περιεχομένου ιστού. Και για την προβολή του περιεχομένου ιστού, απαιτείται η μηχανή του προγράμματος περιήγησης ιστού και αποτελεί μέρος όλων αυτών των εφαρμογών. Υπάρχουν διαφορετικές μηχανές προγράμματος περιήγησης ιστού για κάθε πρόγραμμα περιήγησης ιστού.
Ο παρακάτω πίνακας δείχνει προγράμματα περιήγησης ιστού και ποιες μηχανές προγράμματος περιήγησης ιστού χρησιμοποιούν.
Το Gecko εκτελείται στο ακόλουθο λειτουργικό σύστημα χωρίς προσομοίωση:
- Παράθυρα
- Mac OS
- Linux
- BSD
- Unix
Δεν μπορεί να εκτελεστεί σε λειτουργικό σύστημα Symbian.
Τι είναι το GeckoDriver;
Το GeckoDriver είναι ένας σύνδεσμος σύνδεσης με το πρόγραμμα περιήγησης Firefox για το δικό σας σενάρια στο Σελήνιο . Το GeckoDriver είναι ένας διακομιστής μεσολάβησης που βοηθά στην επικοινωνία με τα προγράμματα περιήγησης που βασίζονται στο Gecko (π.χ. Firefox), για το οποίο παρέχει HTTP API.
Γιατί το Selenium χρειάζεται το GeckoDriver;
Ο Firefox (έκδοση 47 και άνω) έχει κάνει κάποιες αλλαγές σε αυτό και για ορισμένους λόγους ασφαλείας, δεν επιτρέπει σε κανένα πρόγραμμα οδήγησης τρίτου μέρους να αλληλεπιδρά άμεσα με τα προγράμματα περιήγησης. Ως εκ τούτου, δεν μπορούμε να χρησιμοποιήσουμε το Selenium2 με τις τελευταίες εκδόσεις του Firefox. Χρειαζόμαστε το Σελήνιο3.
Το Selenium3 έχει πρόγραμμα οδήγησης Marionette. Το Selenium3 μπορεί να αλληλεπιδράσει απευθείας με το πρόγραμμα περιήγησης Firefox χρησιμοποιώντας έναν διακομιστή μεσολάβησης, ο οποίος δεν είναι παρά το GeckoDriver.
Πώς να χρησιμοποιήσετε το GeckoDriver στο Selenium Project;
- Ας θεωρήσουμε ότι έχετε την τελευταία έκδοση του Selenium WebDriver και το πρόγραμμα περιήγησης Firefox.
- Στη συνέχεια, κατεβάστε το GeckoDriver από εδώ . Αργότερα, επιλέξτε την έκδοση που είναι κατάλληλη για τον υπολογιστή σας.
- Εξαγάγετε αρχεία από τον συμπιεσμένο φάκελο
- Προσθέστε τις αναφορές του Selenium3 libs στο έργο σας μέσω- Κάντε δεξί κλικ στο έργο => Build Path => Configure Build Path => Βιβλιοθήκες => Προσθήκη εξωτερικών βάζων.
- Επιλέγω Φάκελος Lib => Κάντε κλικ στο Clt + A => Κάντε κλικ στο Άνοιγμα .
- Μετά απο εσένα κάντε κλικ στο άνοιγμα , θα δείτε το ακόλουθο παράθυρο:
- Στη συνέχεια, κάντε κλικ στο OK.
- Τώρα ας γράψουμε τον κωδικό μας και χρησιμοποιήσουμε την ιδιότητα συστήματος για να καθορίσουμε τη διαδρομή GeckoDriver.
- Προσθέστε την παρακάτω γραμμή στον κωδικό σας:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Πώς να αντιγράψετε τη διεύθυνση του εξαγόμενου αρχείου. - (Πατήστε 'Shift' από το πληκτρολόγιο και κάντε δεξί κλικ στο αρχείο, θα λάβετε μια επιλογή. Στη συνέχεια, 'Αντιγραφή διεύθυνσης του αρχείου'.))
** ( Σε αυτήν τη διαδρομή επικολλήθηκε αντίγραφο, βεβαιωθείτε ότι υπάρχει διπλή ανάστροφη κάθετο, διαφορετικά ο κώδικας θα έχει σφάλμα σύνταξης.)
Ας πάρουμε ένα παράδειγμα
Παράδειγμα
Εδώ είναι ένα απλό σενάριο, όπου ανοίγουμε την ιστοσελίδα της Google σε ένα πρόγραμμα περιήγησης Firefox και επαληθεύουμε τον τίτλο της ιστοσελίδας.
Κωδικός1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Κατανόηση του κώδικα
# 1) εισαγωγή org.openqa.selenium.WebDriver- Εδώ εισάγουμε όλες τις αναφορές στη διεπαφή WebDriver. Αργότερα, αυτή η διεπαφή WebDriver απαιτείται για τη δημιουργία νέου προγράμματος περιήγησης.
# 2) εισαγωγή org.openqa.selenium.firefox.FirefoxDriver- Εδώ εισάγουμε όλες τις αναφορές στην κλάση FirefoxDriver.
# 3) setProperty (πλήκτρο συμβολοσειράς, τιμή συμβολοσειράς) - Εδώ ρυθμίζουμε την ιδιότητα του συστήματος παρέχοντας το όνομα της ιδιότητας που ονομάζεται Key και τη διαδρομή της που ονομάζεται Value.
Κλειδί -Ονομα της ιδιότητας του συστήματος, δηλαδή webdriver.gecko.driver .
αξία - Διεύθυνση του αρχείου exe του Gecko Driver.
# 4) Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver () - Σε αυτήν τη γραμμή κώδικα δημιουργούμε τη μεταβλητή αναφοράς «πρόγραμμα οδήγησης» του WebDriver και αυτή η μεταβλητή αναφοράς ξεκινά χρησιμοποιώντας την κλάση FirefoxDriver. Ένα προφίλ Firefox χωρίς επεκτάσεις και προσθήκες θα ξεκινήσει με την παρουσία του Firefox.
# 5) λήψη ('URL') - Χρησιμοποιώντας αυτήν τη μέθοδο λήψης μπορούμε να ανοίξουμε την καθορισμένη διεύθυνση URL στο πρόγραμμα περιήγησης. Αυτή η μέθοδος λήψης καλείται χρησιμοποιώντας τη μεταβλητή αναφοράς του WebDriver, δηλαδή πρόγραμμα οδήγησης. Η συμβολοσειρά μεταφέρεται στη μέθοδο λήψης, που σημαίνει ότι η διεύθυνση URL της εφαρμογής μας μεταφέρεται σε αυτήν τη μέθοδο λήψης.
# 6) διαχείριση (). Παράθυρο (). Μεγιστοποίηση () - Χρησιμοποιώντας αυτήν τη γραμμή κώδικα μεγιστοποιούμε το παράθυρο του προγράμματος περιήγησης. Μόλις το πρόγραμμα περιήγησης ανοίξει την καθορισμένη διεύθυνση URL, μεγιστοποιείται χρησιμοποιώντας αυτήν τη γραμμή.
# 7) getTitle () - Χρησιμοποιώντας αυτήν τη γραμμή κώδικα, θα μπορέσουμε να βρούμε τον τίτλο της ιστοσελίδας. Αυτή η μέθοδος καλείται επίσης χρησιμοποιώντας τη μεταβλητή αναφοράς «πρόγραμμα οδήγησης» του WebDriver. Αποθηκεύουμε αυτόν τον τίτλο στη μεταβλητή συμβολοσειράς 'appTitle'.
# 8) Σύγκριση– Εδώ συγκρίνουμε το appTitle (το οποίο θα περάσει driver.getTitle () μέθοδος) και το expTitle (που είναι 'Google') χρησιμοποιώντας τη δήλωση If. Είναι απλώς μια απλή δήλωση If-else. Όταν πληρούται η συνθήκη 'Εάν', εκτυπώνουμε το μήνυμα 'Επιτυχής επαλήθευση' αλλιώς είμαστε το μήνυμα εκτύπωσης 'Η επαλήθευση απέτυχε'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Αυτή η γραμμή κώδικα κλείνει το πρόγραμμα περιήγησης. Αυτή η γραμμή κλείνει μόνο το τρέχον παράθυρο.
# 10) System.exit (0) - Αυτή η μέθοδος γραμμής κώδικα χρησιμοποιείται για τον τερματισμό της λειτουργίας της εικονικής μηχανής Java. Επομένως, συνιστάται να κλείσετε όλα τα ανοιχτά παράθυρα ή αρχεία πριν από αυτήν τη γραμμή.
GeckoDriver και TestNG
Δεν υπάρχει μεγάλη διαφορά στον κώδικα, αλλά εδώ προσθέτω έναν κωδικό μόνο για αναφορά σας.
ΠΑΡΑΔΕΙΓΜΑ:
Ας προχωρήσουμε στο παράδειγμα. Το παράδειγμά μας είναι να ανοίξουμε την ιστοσελίδα του Google.com, να αποκτήσουμε τον τίτλο της και να την εκτυπώσουμε.
Κωδικός2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Σημεία που πρέπει να θυμάστε κατά τη σύνταξη του κώδικα TestNG:
# 1) Χρησιμοποιήστε τη μέθοδο System.setProperty (πλήκτρο συμβολοσειράς, τιμή συμβολοσειράς) μέσα στη συνάρτηση f () όπως στο προηγούμενο παράδειγμα. Σε αυτό το παράδειγμα, το γράψαμε στην κύρια συνάρτηση. Ωστόσο, στο TestNG, δεν υπάρχουν κύριες () λειτουργίες. Εάν το γράψετε εκτός της συνάρτησης, θα εμφανιστεί ένα σφάλμα σύνταξης.
#δύο) Το δεύτερο πιο σημαντικό πράγμα που πρέπει να θυμάστε είναι το System.exit (0). Δεν χρειάζεται να προσθέσετε αυτήν τη γραμμή κώδικα στο σενάριο TestNG. Υπάρχει ένας λόγος για αυτό που είναι - μετά την εκτέλεση του σεναρίου TestNG, δημιουργείται φάκελος εξόδου όπου μπορείτε να δείτε τις δημιουργούμενες αναφορές και το αποτέλεσμα, εάν προσθέσετε το System.exit (0) στο σενάριό σας αυτός ο φάκελος (φάκελος εξόδου) δεν θα λάβει δημιουργήθηκε και δεν θα μπορείτε να δείτε τις αναφορές.
Βήματα για να προσθέσετε μια διαδρομή στην περιβαλλοντική μεταβλητή PATH του συστήματος
- Στο σύστημα των Windows κάντε δεξί κλικ στον υπολογιστή μου ή σε αυτόν τον υπολογιστή.
- Επιλέξτε Ιδιότητες.
- Επιλέξτε σύνθετες ρυθμίσεις συστήματος.
- Κάντε κλικ στο κουμπί Μεταβλητές περιβάλλοντος.
- Από τις μεταβλητές συστήματος επιλέξτε PATH.
- Κάντε κλικ στο κουμπί Επεξεργασία.
- Κάντε κλικ στο κουμπί Νέο
- Επικολλήστε τη διαδρομή του αρχείου GeckoDriver.
- Κάντε κλικ στο OK.
Ζητήματα χωρίς πρόγραμμα οδήγησης Gecko
Μπορεί να αντιμετωπίσετε ορισμένα προβλήματα όπως αυτά που δίνονται παρακάτω.
# 1) Εάν χρησιμοποιείτε μια παλιά έκδοση του Firefox και του Selenium3, τότε θα λάβετε την ακόλουθη εξαίρεση:
php συνέντευξη ερώτηση και απάντηση για εμπειρία
Εξαίρεση στο νήμα 'main' java.lang.IllegalStateException
#δύο) Εάν χρησιμοποιείτε την τελευταία έκδοση του Firefox και μια παλιά έκδοση του Selenium, τότε θα λάβετε την ακόλουθη εξαίρεση:
org.openqa.selenium.firefox.NotConnectedException : Δεν είναι δυνατή η σύνδεση με τον κεντρικό υπολογιστή 127.0.0.1 στη θύρα 7055 μετά από 45000ms
# 3) Εάν χρησιμοποιείτε την τελευταία έκδοση του Firefox και του WebDriver, αλλά δεν χρησιμοποιείτε το GeckoDriver, θα λάβετε την ακόλουθη εξαίρεση:
Εξαίρεση στο νήμα 'main' java.lang.IllegalStateException: Η διαδρομή προς το εκτελέσιμο πρόγραμμα οδήγησης πρέπει να οριστεί από την ιδιότητα συστήματος webdriver.gecko.driver. για περισσότερες πληροφορίες, δείτε εδώ .Μπορείτε να κατεβάσετε την τελευταία έκδοση από εδώ .
Πρόσθετες πληροφορίες για το GeckoDriver
Όπως γνωρίζουμε, το GeckoDriver είναι ένας διακομιστής μεσολάβησης που βοηθά στην επικοινωνία με προγράμματα περιήγησης που βασίζονται σε Gecko (π.χ. Firefox), για τους οποίους παρέχει HTTP API.
Αυτό το HTTP API μπορεί να γίνει κατανοητό χρησιμοποιώντας το πρωτόκολλο WebDriver. Υπάρχουν ορισμένοι κόμβοι στο πρωτόκολλο WebDriver που περιλαμβάνουν τοπικό τέλος, απομακρυσμένο τέλος, ενδιάμεσο κόμβο και τελικό σημείο. Η επικοινωνία μεταξύ αυτών των κόμβων περιγράφεται στο πρωτόκολλο WebDriver.
Το τοπικό τέλος είναι η πλευρά του πελάτη του πρωτοκόλλου WebDriver. Απομακρυσμένο τέλος σημαίνει πλευρά διακομιστή του πρωτοκόλλου WebDriver. Ο ενδιάμεσος κόμβος εκτελεί το ρόλο ενός διακομιστή μεσολάβησης. Ο κόμβος Endpoint τίθεται σε ισχύ από έναν πράκτορα χρήστη ή ένα παρόμοιο πρόγραμμα.
Οι εντολές και οι απαντήσεις που αποστέλλονται από το WebDriver στο GeckoDriver μεταφράζονται στο Marionette Protocol και μετά μεταφέρονται στο Marionette Driver από το GeckoDriver. Καταλήγουμε λοιπόν λέγοντας ότι ο GeckoDriver ενεργεί ως πληρεξούσιος μεταξύ αυτών των δύο WebDriver και Marionette.
Το Marionette χωρίζεται σε 2 μέρη, το οποίο είναι το τμήμα διακομιστή και το τμήμα πελάτη. Οι εντολές που αποστέλλονται από το τμήμα πελάτη εκτελούνται από το τμήμα διακομιστή.
Αυτό το έργο εκτέλεσης εντολών εκτελείται μέσα στο πρόγραμμα περιήγησης. Το Marionette δεν είναι παρά ένας συνδυασμός ενός στοιχείου gecko (που είναι διακομιστής Marionette) και ενός εξωτερικού στοιχείου (το οποίο ονομάζεται Marionette Client). Το GeckoDriver είναι γραμμένο στη γλώσσα προγραμματισμού Rust.
συμπέρασμα
Το GeckoDriver είναι ένας ενδιάμεσος παράγοντας μεταξύ των σεναρίων Selenium και των προγραμμάτων περιήγησης που βασίζονται σε Gecko όπως ο Firefox.
Το GeckoDriver είναι ένας διακομιστής μεσολάβησης για επικοινωνία με προγράμματα περιήγησης με βάση το Gecko ( Π.χ. Firefox). Ο Firefox (έκδοση 47 και άνω) έχει κάνει κάποιες αλλαγές, γεγονός που οδήγησε στην αποτροπή της υποστήριξης προγραμμάτων οδήγησης τρίτων για άμεση αλληλεπίδραση με τα προγράμματα περιήγησης.
Αυτός είναι ο πρωταρχικός λόγος για τον οποίο πρέπει να χρησιμοποιήσουμε το GeckoDriver. Ο ευκολότερος τρόπος χρήσης του GeckoDriver στο σενάριό σας είναι να εφαρμόσετε τη χρήση του Ιδιότητα System.set. (System.setProperty ('webdriver.gecko.driver', 'Διαδρομή του αρχείου προγράμματος οδήγησης Gecko')).
Είστε νέος στο GeckoDriver; Μάθατε κάτι νέο σήμερα σε αυτό το Σελήνιο GeckoDriver; Ή έχετε κάτι ενδιαφέρον να μοιραστείτε μαζί μας για το GeckoDriver; Μη διστάσετε να εκφράσετε τις σκέψεις σας στην παρακάτω ενότητα σχολίων.
Συνιστώμενη ανάγνωση
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Εισαγωγή στο Selenium WebDriver - Selenium Tutorial # 8
- Selenium Find Element By Text Tutorial με παραδείγματα
- Υλοποίηση του πρώτου σεναρίου WebDriver - Selenium WebDriver Tutorial # 10
- Τρόπος χειρισμού ειδοποιήσεων / αναδυόμενων παραθύρων στο Selenium WebDriver - Selenium Tutorial # 16
- WebDriver Ολόκληρη εγκατάσταση και εγκατάσταση με το Eclipse - Selenium Tutorial # 9
- Εκμάθηση έκλειψης σε βάθος για αρχάριους
- Αποτελεσματικά σενάρια σεληνίου και σενάρια αντιμετώπισης προβλημάτων - Σελήνιο σεμινάριο # 27