Πρώτο σενάριο Webdriver Selenium: Παράδειγμα κώδικα δείγματος JAVA

Πίνακας περιεχομένων:

Anonim

Χρησιμοποιώντας την κλάση Java "myclass" που δημιουργήσαμε στο προηγούμενο σεμινάριο, ας προσπαθήσουμε να δημιουργήσουμε ένα σενάριο WebDriver που θα:

  1. ανακτήστε την αρχική σελίδα της Mercury Tours
  2. επαληθεύστε τον τίτλο του
  3. εκτυπώστε το αποτέλεσμα της σύγκρισης
  4. κλείστε το πριν τερματίσετε ολόκληρο το πρόγραμμα.

Κωδικός WebDriver

Παρακάτω είναι ο πραγματικός κώδικας WebDriver για τη λογική που παρουσιάζεται από το παραπάνω σενάριο

Σημείωση: Ξεκινώντας τον Firefox 35, πρέπει να χρησιμοποιήσετε το πρόγραμμα οδήγησης gecko που δημιουργήθηκε από τον Mozilla για να χρησιμοποιήσετε το πρόγραμμα οδήγησης Web. Το Selenium 3.0, gecko και firefox έχει προβλήματα συμβατότητας και η σωστή ρύθμιση τους θα μπορούσε να γίνει μια δύσκολη εργασία. Εάν ο κώδικας δεν λειτουργεί, υποβαθμίστε σε Firefox έκδοση 47 ή νεότερη. Εναλλακτικά, μπορείτε να εκτελέσετε τα σενάρια σας στο Chrome. Το Selenium λειτουργεί έξω από το κουτί για το Chrome. Απλώς πρέπει να αλλάξετε 3 γραμμές κώδικα για να κάνετε το σενάριό σας να λειτουργεί με το Chrome ή τον Firefox

πακέτο newproject;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;// σχολιάστε την παραπάνω γραμμή και αφήστε το σχόλιο να χρησιμοποιήσετε το Chrome// εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη PG1 {Δημόσιο στατικό κενό (String [] args) {// δήλωση και παρουσίαση αντικειμένων / μεταβλητώνSystem.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();// σχολιάστε τις παραπάνω 2 γραμμές και αφήστε το σχόλιο κάτω από 2 γραμμές για να χρησιμοποιήσετε το Chrome//System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe ");// Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/newtours/";String waitingTitle = "Καλώς ήλθατε: Mercury Tours";String actualTitle = "";// εκκινήστε το Fire fox και κατευθύνετε το στη διεύθυνση URL βάσηςdriver.get (baseUrl);// λάβετε την πραγματική αξία του τίτλουactualTitle = driver.getTitle ();/ ** συγκρίνετε τον πραγματικό τίτλο της σελίδας με τον αναμενόμενο και εκτυπώστε* το αποτέλεσμα ως "Πέρασε" ή "Αποτυχία"* /εάν (actualTitle.contentEquals (Αναμενόμενο Τίτλος)) {System.out.println ("Η δοκιμή ολοκληρώθηκε!");} αλλιώς {System.out.println ("Η δοκιμή απέτυχε");}// κλείστε το Fire foxdriver.close ();}}

Εξηγώντας τον κωδικό

Εισαγωγή πακέτων

Για να ξεκινήσετε, πρέπει να εισαγάγετε τα ακόλουθα δύο πακέτα:

  1. org.openqa.selenium. * - περιέχει την κλάση WebDriver που απαιτείται για τη δημιουργία νέου προγράμματος περιήγησης φορτωμένου με συγκεκριμένο πρόγραμμα οδήγησης
  2. org.openqa.selenium.firefox.FirefoxDriver - περιέχει την κλάση FirefoxDriver που απαιτείται για την εγκατάσταση ενός προγράμματος οδήγησης ειδικά για τον Firefox στο πρόγραμμα περιήγησης που δημιουργήθηκε από την κλάση WebDriver

Εάν η δοκιμή σας χρειάζεται πιο περίπλοκες ενέργειες όπως πρόσβαση σε άλλη τάξη, λήψη στιγμιότυπων οθόνης του προγράμματος περιήγησης ή χειρισμός εξωτερικών αρχείων, σίγουρα θα πρέπει να εισαγάγετε περισσότερα πακέτα.

Δημιουργία αντικειμένων και μεταβλητών

Κανονικά, έτσι δημιουργείται ένα αντικείμενο προγράμματος οδήγησης.

Μια κλάση FirefoxDriver χωρίς παραμέτρους σημαίνει ότι το προεπιλεγμένο προφίλ Firefox θα ξεκινήσει από το πρόγραμμα Java. Το προεπιλεγμένο προφίλ Firefox είναι παρόμοιο με την εκκίνηση του Firefox σε ασφαλή λειτουργία (δεν φορτώνονται επεκτάσεις).

Για ευκολία, αποθηκεύσαμε τη βασική διεύθυνση URL και τον αναμενόμενο τίτλο ως μεταβλητές.

Έναρξη περιόδου σύνδεσης προγράμματος περιήγησης

Η μέθοδος get () του WebDriver χρησιμοποιείται για την έναρξη μιας νέας περιόδου σύνδεσης προγράμματος περιήγησης και την κατευθύνει στη διεύθυνση URL που καθορίζετε ως παράμετρος.

Αποκτήστε τον πραγματικό τίτλο σελίδας

Η κλάση WebDriver έχει τη μέθοδο getTitle () που χρησιμοποιείται πάντα για την απόκτηση του τίτλου της σελίδας της τρέχουσας φόρτωσης .

Συγκρίνετε τις αναμενόμενες και τις πραγματικές τιμές

Αυτό το τμήμα του κώδικα χρησιμοποιεί απλώς μια βασική δομή Java if-else για να συγκρίνει τον πραγματικό τίτλο με τον αναμενόμενο.

Τερματισμός περιόδου σύνδεσης προγράμματος περιήγησης

Η μέθοδος " close () " χρησιμοποιείται για να κλείσει το παράθυρο του προγράμματος περιήγησης.

Τερματισμός ολόκληρου του προγράμματος

Εάν χρησιμοποιήσετε αυτήν την εντολή χωρίς να κλείσετε πρώτα όλα τα παράθυρα του προγράμματος περιήγησης, ολόκληρο το πρόγραμμα Java θα τερματιστεί, αφήνοντας ανοιχτό το παράθυρο του προγράμματος περιήγησης.

Εκτέλεση του τεστ

Υπάρχουν δύο τρόποι εκτέλεσης κώδικα στο Eclipse IDE.

  1. Στη γραμμή μενού του Eclipse, κάντε κλικ στο Εκτέλεση> Εκτέλεση.
  2. Πατήστε Ctrl + F11 για να εκτελέσετε ολόκληρο τον κώδικα.

Εάν κάνατε τα πάντα σωστά, το Eclipse θα έδινε το "Test Passed!"

Εντοπισμός στοιχείων GUI

Ο εντοπισμός στοιχείων στο WebDriver γίνεται χρησιμοποιώντας τη μέθοδο " findElement (By. Locator ()) ". Το τμήμα "εντοπιστής" του κώδικα είναι ίδιο με οποιονδήποτε από τους εντοπιστές που συζητήθηκαν προηγουμένως στα κεφάλαια Selenium IDE αυτών των σεμιναρίων. Όντως, συνιστάται να εντοπίσετε στοιχεία GUI χρησιμοποιώντας IDE και μόλις αναγνωριστεί με επιτυχία εξαγωγή του κώδικα στο WebDriver.

Ακολουθεί ένα δείγμα κώδικα Selenium που εντοπίζει ένα στοιχείο από το αναγνωριστικό του. Το Facebook χρησιμοποιείται ως βασική διεύθυνση URL.

πακέτο newproject;εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;δημόσια τάξη PG2 {Δημόσιο στατικό κενό (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();String baseUrl = "http://www.facebook.com";String tagName = "";driver.get (baseUrl);tagName = driver.findElement (By.id ("email")). getTagName ();System.out.println (tagName);driver.close ();System.exit (0);}}

Χρησιμοποιήσαμε τη μέθοδο getTagName () για να εξαγάγουμε το όνομα της ετικέτας του συγκεκριμένου στοιχείου του οποίου το αναγνωριστικό είναι "email". Κατά την εκτέλεση, αυτός ο κωδικός θα πρέπει να μπορεί να αναγνωρίζει σωστά το όνομα της ετικέτας "input" και θα τον εκτυπώνει στο παράθυρο της κονσόλας του Eclipse.

Περίληψη για τον εντοπισμό στοιχείων

Παραλλαγή Περιγραφή Δείγμα
Με. όνομα τάξης βρίσκει στοιχεία με βάση την τιμή του χαρακτηριστικού "class" findElement (By.className ("someClassName"))
Με. cssSelector βρίσκει στοιχεία που βασίζονται στον υποκείμενο κινητήρα CSS Selector του οδηγού findElement (By.cssSelector ("εισαγωγή # email"))
Με. ταυτότητα εντοπίζει στοιχεία με την τιμή του χαρακτηριστικού "id" findElement (By.id ("someId"))
Με. linkText βρίσκει ένα στοιχείο σύνδεσης με το ακριβές κείμενο που εμφανίζει findElement (By.linkText ("ΕΓΓΡΑΦΗ"))
Με. όνομα εντοπίζει στοιχεία με την τιμή του χαρακτηριστικού "name" findElement (By.name ("someName"))
Με. partialLinkText εντοπίζει στοιχεία που περιέχουν το δεδομένο κείμενο συνδέσμου findElement (By.partialLinkText ("REG"))
Με. όνομα ετικέτας εντοπίζει στοιχεία με το όνομα της ετικέτας τους findElement (By.tagName ("div"))
Με. xpath εντοπίζει στοιχεία μέσω XPath findElement (By.xpath ("// html / body / div / table / tbody / tr / td [2] / table / tbody / tr [4] / td / table / tbody / tr / td [2] / πίνακα / tbody / tr [2] / td [3] / form / table / tbody / tr [5] "))

Σημείωση σχετικά με τη χρήση του findElement (By.cssSelector ())

Το By.cssSelector () δεν υποστηρίζει τη δυνατότητα "περιέχει" . Εξετάστε τον κωδικό Selenium IDE παρακάτω -

Στο Selenium IDE παραπάνω, πέρασε ολόκληρο το τεστ. Ωστόσο, στο παρακάτω σενάριο Selenium WebDriver, η ίδια δοκιμή δημιούργησε ένα σφάλμα επειδή το WebDriver δεν υποστηρίζει τη λέξη-κλειδί "περιέχει" όταν χρησιμοποιείται στη μέθοδο By.cssSelector ().

Κοινές εντολές

Δημιουργία στοιχείων Web

Αντί να χρησιμοποιείτε τη μεγάλη σύνταξη "driver.findElement (By.locator ())" κάθε φορά που θα έχετε πρόσβαση σε ένα συγκεκριμένο στοιχείο, μπορούμε να δημιουργήσουμε ένα αντικείμενο WebElement για αυτό. Η κλάση WebElement περιλαμβάνεται στο πακέτο "org.openqa.selenium. *".

Κάνοντας κλικ σε ένα στοιχείο

Το κλικ είναι ίσως ο πιο συνηθισμένος τρόπος αλληλεπίδρασης με στοιχεία ιστού . Η μέθοδος κλικ () χρησιμοποιείται για την προσομοίωση του κλικ σε οποιοδήποτε στοιχείο. Το ακόλουθο παράδειγμα Selenium Java δείχνει πώς χρησιμοποιήθηκε το κλικ () για να κάνετε κλικ στο κουμπί "Είσοδος" της Mercury Tours.

Τα ακόλουθα πράγματα πρέπει να σημειωθούν όταν χρησιμοποιείτε τη μέθοδο κλικ ()

  • Δεν παίρνει καμία παράμετρο / όρισμα.
  • Η μέθοδος περιμένει αυτόματα τη φόρτωση μιας νέας σελίδας, εάν υπάρχει.
  • Το στοιχείο στο οποίο πρέπει να κάνετε κλικ, πρέπει να είναι ορατό (το ύψος και το πλάτος δεν πρέπει να είναι ίσο με μηδέν).

Λάβετε εντολές

Λήψη εντολών για λήψη σημαντικών πληροφοριών σχετικά με τη σελίδα / στοιχείο. Ακολουθούν μερικές σημαντικές εντολές "λήψης" με τις οποίες πρέπει να γνωρίζετε.

Εντολές Χρήση
λήψη () Δείγμα χρήσης:
  • Ανοίγει αυτόματα ένα νέο παράθυρο του προγράμματος περιήγησης και παίρνει τη σελίδα που καθορίζετε μέσα στις παρενθέσεις του.
  • Είναι το αντίστοιχο της εντολής "ανοιχτό" του Selenium IDE.
  • Η παράμετρος πρέπει να είναι αντικείμενο String .
getTitle () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Ανακτά τον τίτλο της τρέχουσας σελίδας
  • Κορυφαίοι και τελικοί λευκοί χώροι κόβονται
  • Επιστρέφει μια μηδενική συμβολοσειρά εάν η σελίδα δεν έχει τίτλο
getPageSource () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Επιστρέφει τον πηγαίο κώδικα της σελίδας ως τιμή συμβολοσειράς
getCurrentUrl () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Ανακτά τη συμβολοσειρά που αντιπροσωπεύει την τρέχουσα διεύθυνση URL που βλέπει το πρόγραμμα περιήγησης
getText () Δείγμα χρήσης:
  • Ανακτά το εσωτερικό κείμενο του στοιχείου που καθορίζετε

Περιήγηση εντολών

Αυτές οι εντολές σάς επιτρέπουν να κάνετε ανανέωση, μετάβαση και εναλλαγή μεταξύ διαφορετικών ιστοσελίδων.

πλοήγηση (). έως () Δείγμα χρήσης:
  • Ανοίγει αυτόματα ένα νέο παράθυρο του προγράμματος περιήγησης και παίρνει τη σελίδα που καθορίζετε μέσα στις παρενθέσεις του.
  • Κάνει ακριβώς το ίδιο πράγμα με τη μέθοδο get ().
πλοήγηση (). refresh () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους.
  • Είναι ανανεώνει την τρέχουσα σελίδα.
πλοήγηση (). πίσω () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Σας μεταφέρει μία σελίδα στο ιστορικό του προγράμματος περιήγησης.
navigate (). forward () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Σας μεταφέρει μία σελίδα στο ιστορικό του προγράμματος περιήγησης.

Κλείσιμο και κλείσιμο των Windows του προγράμματος περιήγησης

κλείσιμο () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Κλείνει μόνο το παράθυρο του προγράμματος περιήγησης που ελέγχει το WebDriver .
quit () Δείγμα χρήσης:
  • Δεν χρειάζεται παραμέτρους
  • Κλείνει όλα τα παράθυρα που έχει ανοίξει το WebDriver.

Για να απεικονίσετε με σαφήνεια τη διαφορά μεταξύ κλεισίματος () και κλεισίματος (), δοκιμάστε να εκτελέσετε τον παρακάτω κώδικα. Χρησιμοποιεί μια ιστοσελίδα που εμφανίζει αυτόματα ένα παράθυρο κατά τη φόρτωση της σελίδας και ανοίγει μια άλλη μετά την έξοδο.

Σημειώστε ότι μόνο το παράθυρο του γονικού προγράμματος περιήγησης έκλεισε και όχι τα δύο αναδυόμενα παράθυρα.

Αλλά αν χρησιμοποιήσετε το quit (), όλα τα παράθυρα θα κλείσουν - όχι μόνο το γονικό. Δοκιμάστε να εκτελέσετε τον παρακάτω κώδικα και θα παρατηρήσετε ότι και τα δύο αναδυόμενα παράθυρα θα κλείσουν αυτόματα.

πακέτο newproject;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;δημόσια τάξη PG3 {Δημόσιο στατικό κενό (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();driver.get ("http://www.popuptest.com/popuptest2.html");driver.quit (); // χρησιμοποιώντας το QUIT όλα τα παράθυρα θα κλείσουν}}

Εναλλαγή μεταξύ πλαισίων

Για πρόσβαση στα στοιχεία GUI σε ένα Πλαίσιο, πρέπει πρώτα να κατευθύνουμε το WebDriver για να επικεντρωθούμε πρώτα στο πλαίσιο ή το αναδυόμενο παράθυρο πριν μπορέσουμε να έχουμε πρόσβαση σε στοιχεία μέσα σε αυτά. Ας πάρουμε, για παράδειγμα, την ιστοσελίδα http://demo.guru99.com/selenium/deprecated.html

Αυτή η σελίδα έχει 3 καρέ των οποίων τα χαρακτηριστικά "name" αναφέρονται παραπάνω. Θέλουμε να αποκτήσουμε πρόσβαση στον σύνδεσμο "Κατάργηση" που περικυκλώνεται παραπάνω με κίτρινο χρώμα. Για να γίνει αυτό, πρέπει πρώτα να δώσουμε εντολή στο WebDriver να μεταβεί στο πλαίσιο "classFrame" χρησιμοποιώντας τη μέθοδο "switchTo (). Frame ()" . Θα χρησιμοποιήσουμε το χαρακτηριστικό name του frame ως παράμετρο για το τμήμα "frame ()".

πακέτο newproject;εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;δημόσια τάξη PG4 {Δημόσιο στατικό κενό (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();driver.get ("http://demo.guru99.com/selenium/deprecated.html");driver.switchTo (). frame ("classFrame");driver.findElement (By.linkText ("Καταργήθηκε")). κάντε κλικ ();driver.close ();}}

Μετά την εκτέλεση αυτού του κώδικα, θα δείτε ότι το πλαίσιο "classFrame" μεταφέρεται στη σελίδα "Καταργημένο API", πράγμα που σημαίνει ότι ο κώδικας μας μπόρεσε να αποκτήσει πρόσβαση στον σύνδεσμο "Κατάργηση"

Εναλλαγή μεταξύ αναδυόμενων Windows

Το WebDriver επιτρέπει την εμφάνιση αναδυόμενων παραθύρων όπως ειδοποιήσεις, σε αντίθεση με το Selenium IDE. Για να αποκτήσετε πρόσβαση στα στοιχεία της ειδοποίησης (όπως το μήνυμα που περιέχει), πρέπει να χρησιμοποιήσουμε τη μέθοδο "switchTo (). Alert ()" . Στον παρακάτω κώδικα, θα χρησιμοποιήσουμε αυτήν τη μέθοδο για πρόσβαση στο πλαίσιο ειδοποίησης και στη συνέχεια θα ανακτήσουμε το μήνυμά της χρησιμοποιώντας τη μέθοδο "getText ()" και, στη συνέχεια, κλείστε αυτόματα το πλαίσιο ειδοποίησης χρησιμοποιώντας το "switchTo (). Alert (). Accept () " μέθοδο.

Αρχικά, μεταβείτε στη διεύθυνση http://jsbin.com/usidix/1 και κάντε χειροκίνητο κλικ στο "Μετάβαση!" κουμπί εκεί και δείτε μόνοι σας το κείμενο του μηνύματος.

Ας δούμε το παράδειγμα Selenium κώδικα για να το κάνουμε

συσκευασία mypackageεισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;δημόσια τάξη myclass {Δημόσιο στατικό κενό (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();String alertMessage = "";driver.get ("http://jsbin.com/usidix/1");driver.findElement (By.cssSelector ("input [value = \" Go! \ "]")). κάντε κλικ ();alertMessage = driver.switchTo (). alert (). getText ();driver.switchTo (). ειδοποίηση (). αποδοχή ();System.out.println (alertMessage);driver.quit ();}}

Στην κονσόλα Eclipse, σημειώστε ότι το εκτυπωμένο μήνυμα ειδοποίησης είναι:

Περιμένει

Υπάρχουν δύο είδη αναμονών.

  1. Σιωπηρή αναμονή - χρησιμοποιείται για τον ορισμό του προεπιλεγμένου χρόνου αναμονής σε όλο το πρόγραμμα
  2. Άμεση αναμονή - χρησιμοποιείται για τον καθορισμό του χρόνου αναμονής μόνο για μια συγκεκριμένη παρουσία

Σιωπηρή αναμονή

  • Είναι πιο απλό να κωδικοποιήσετε από το Explicit Waits.
  • Συνήθως δηλώνεται στο μέρος του κώδικα.
  • Θα χρειαστείτε μόνο ένα επιπλέον πακέτο για εισαγωγή.

Για να ξεκινήσετε να χρησιμοποιείτε μια σιωπηρή αναμονή, θα πρέπει να εισαγάγετε αυτό το πακέτο στον κωδικό σας.

Στη συνέχεια, στο μέρος του κώδικα σας, προσθέστε το.

Άμεση αναμονή

Οι ρητές αναμονές γίνονται χρησιμοποιώντας τις κλάσεις WebDriverWait και ExpectedCondition . Για το ακόλουθο παράδειγμα Selenium WebDriver, θα περιμένουμε έως και 10 δευτερόλεπτα για ένα στοιχείο του οποίου το αναγνωριστικό είναι "όνομα χρήστη" να γίνει ορατό πριν προχωρήσουμε στην επόμενη εντολή. Εδώ είναι τα βήματα.

Βήμα 1

Εισαγάγετε αυτά τα δύο πακέτα:

Βήμα 2

Δηλώστε μια μεταβλητή WebDriverWait. Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε το "myWaitVar" ως το όνομα της μεταβλητής.

Βήμα 3

Χρησιμοποιήστε το myWaitVar με ExpectedConditions σε τμήματα όπου χρειάζεστε τη ρητή αναμονή για να συμβεί. Σε αυτήν την περίπτωση, θα χρησιμοποιήσουμε ρητή αναμονή στην είσοδο "όνομα χρήστη" (Mercury Tours HomePage) προτού πληκτρολογήσουμε το κείμενο "φροντιστήριο" σε αυτό.

Συνθήκες

Οι ακόλουθες μέθοδοι χρησιμοποιούνται σε λειτουργίες υπό όρους και βρόχους -

  • Το isEnabled () χρησιμοποιείται όταν θέλετε να επαληθεύσετε εάν ένα συγκεκριμένο στοιχείο είναι ενεργοποιημένο ή όχι πριν από την εκτέλεση μιας εντολής.
  • Το isDisplayed () χρησιμοποιείται όταν θέλετε να επαληθεύσετε εάν εμφανίζεται ένα συγκεκριμένο στοιχείο ή όχι πριν από την εκτέλεση μιας εντολής.
  • Το isSelected () χρησιμοποιείται όταν θέλετε να επαληθεύσετε εάν έχει επιλεγεί ένα συγκεκριμένο πλαίσιο ελέγχου, ένα κουμπί επιλογής ή μια επιλογή σε ένα αναπτυσσόμενο πλαίσιο . Δεν λειτουργεί σε άλλα στοιχεία.

Χρήση των ExpectedConditions

Η κατηγορία ExpectedConditions προσφέρει ένα ευρύτερο σύνολο συνθηκών που μπορείτε να χρησιμοποιήσετε σε συνδυασμό με τη μέθοδο WebDriverWait's μέχρι ().

Παρακάτω είναι μερικές από τις πιο κοινές μεθόδους ExpectedConditions.

  • alertIsPresent () - περιμένει μέχρι να εμφανιστεί ένα πλαίσιο ειδοποίησης.
  • elementToBeClickable () - Περιμένει έως ότου ένα στοιχείο είναι ορατό και ταυτόχρονα ενεργοποιηθεί. Το παρακάτω δείγμα Κωδικός Selenium θα περιμένει έως ότου το στοιχείο να γίνει ορατό και ενεργοποιημένο πρώτα πριν εκχωρήσει αυτό το στοιχείο ως μεταβλητή WebElement που ονομάζεται "txtUserName".
  • frameToBeAvailableAndSwitchToIt () - Περιμένει έως ότου το δεδομένο πλαίσιο είναι ήδη διαθέσιμο και, στη συνέχεια, μεταβαίνει αυτόματα σε αυτό.

Εξαιρέσεις

Όταν χρησιμοποιείτε isEnabled (), isDisplayed () και isSelected (), το WebDriver υποθέτει ότι το στοιχείο υπάρχει ήδη στη σελίδα. Διαφορετικά, θα ρίξει ένα NoSuchElementException . Για να το αποφύγουμε αυτό, πρέπει να χρησιμοποιήσουμε ένα μπλοκ δοκιμής, ώστε το πρόγραμμα να μην διακοπεί.

WebElement txtbox_username = driver.findElement (By.id ("όνομα χρήστη"));προσπαθήστε{εάν (txtbox_username.isEnabled ()) {txtbox_username.sendKeys ("φροντιστήριο");}}catch (NoSuchElementException nsee) {System.out.println (nsee.toString ());}

Εάν χρησιμοποιείτε ρητές αναμονές, ο τύπος εξαίρεσης που πρέπει να πιάσετε είναι το "TimeoutException"

Περίληψη

  • Για να ξεκινήσετε να χρησιμοποιείτε το WebDriver API, πρέπει να εισαγάγετε τουλάχιστον αυτά τα δύο πακέτα.
  • org.openqa.selenium. *
  • org.openqa.selenium.firefox.FirefoxDriver
  • Η μέθοδος get () είναι το αντίστοιχο της εντολής "open" του Selenium IDE.
  • Ο εντοπισμός στοιχείων στο WebDriver γίνεται χρησιμοποιώντας τη μέθοδο findElement () .
  • Ακολουθούν οι διαθέσιμες επιλογές για τον εντοπισμό στοιχείων στο WebDriver:
  • Με. όνομα τάξης
  • Με. cssSelector
  • Με. ταυτότητα
  • Με. linkText
  • Με. όνομα
  • Με. partialLinkText
  • Με. όνομα ετικέτας
  • Με. xpath
  • Το By.cssSelector () δεν υποστηρίζει τη δυνατότητα "περιέχει" .
  • Μπορείτε να δημιουργήσετε ένα στοιχείο χρησιμοποιώντας την κλάση WebElement .
  • Κάνοντας κλικ σε ένα στοιχείο γίνεται χρησιμοποιώντας τη μέθοδο κλικ () .
  • Το WebDriver παρέχει αυτές τις χρήσιμες εντολές λήψης :
  • παίρνω()
  • getTitle ()
  • getPageSource ()
  • getCurrentUrl ()
  • getText ()
  • Το WebDriver παρέχει αυτές τις χρήσιμες εντολές πλοήγησης
  • πλοήγηση (). εμπρός ()
  • πλοήγηση (). πίσω ()
  • πλοήγηση (). έως ()
  • πλοήγηση (). ανανέωση ()
  • Οι μέθοδοι close () και quit () χρησιμοποιούνται για το κλείσιμο των παραθύρων του προγράμματος περιήγησης. Κλείσιμο () χρησιμοποιείται για να κλείσει ένα μόνο παράθυρο. ενώ το quit () χρησιμοποιείται για να κλείσει όλα τα παράθυρα που σχετίζονται με το γονικό παράθυρο που ελέγχει το αντικείμενο WebDriver.
  • Οι μέθοδοι switchTo (). Frame () και switchTo (). Alert () χρησιμοποιούνται για να κατευθύνουν την εστίαση του WebDriver σε ένα πλαίσιο ή ειδοποίηση, αντίστοιχα.
  • Οι έμμεσες αναμονές χρησιμοποιούνται για τον καθορισμό του χρόνου αναμονής σε όλο το πρόγραμμα, ενώ οι ρητές αναμονές χρησιμοποιούνται μόνο σε συγκεκριμένες μερίδες.
  • Μπορείτε να χρησιμοποιήσετε τις μεθόδους isEnabled (), isDisplayed (), isSelected () και συνδυασμού μεθόδων WebDriverWait και ExpectedConditions κατά την επαλήθευση της κατάστασης ενός στοιχείου. Ωστόσο, δεν επαληθεύουν εάν το στοιχείο δεν υπάρχει.
  • Όταν κλήθηκε το isEnabled (), το isDisplayed () ή το isSelected () ενώ το στοιχείο δεν υπήρχε, το WebDriver θα ρίξει ένα NoSuchElementException .
  • Όταν κλήθηκαν οι μέθοδοι WebDriverWait και ExpectedConditions ενώ το στοιχείο δεν υπήρχε, το WebDriver θα έριχνε ένα TimeoutException .

Σημείωση:

driver.get (): Χρησιμοποιείται για τη μετάβαση στον συγκεκριμένο ιστότοπο, αλλά δεν διατηρεί το Ιστορικό και τα cookie του προγράμματος περιήγησης, οπότε δεν μπορούμε να χρησιμοποιήσουμε το κουμπί εμπρός και πίσω, αν κάνουμε κλικ σε αυτό, η σελίδα δεν θα πάρει χρονοδιάγραμμα

driver.navigate (): χρησιμοποιείται για τη μετάβαση στον συγκεκριμένο ιστότοπο, αλλά διατηρεί το ιστορικό του προγράμματος περιήγησης και τα cookie, ώστε να μπορούμε να χρησιμοποιήσουμε το κουμπί προς τα εμπρός και προς τα πίσω για πλοήγηση μεταξύ των σελίδων κατά την κωδικοποίηση του Testcase