Selenium Form WebElement: TextBox, Button, sendkeys (), κάντε κλικ ()

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

Anonim

Οι φόρμες είναι τα βασικά στοιχεία ιστού για τη λήψη πληροφοριών από τους επισκέπτες της ιστοσελίδας. Οι φόρμες Ιστού έχουν διαφορετικά στοιχεία GUI όπως πλαίσια κειμένου, πεδία κωδικού πρόσβασης, πλαίσια ελέγχου, κουμπιά ραδιοφώνου, αναπτυσσόμενα, εισόδους αρχείων κ.λπ.

Θα δούμε πώς μπορείτε να αποκτήσετε πρόσβαση σε αυτά τα διαφορετικά στοιχεία φόρμας χρησιμοποιώντας το Selenium Web Driver με Java. Το σελήνιο ενσωματώνει κάθε στοιχείο φόρμας ως αντικείμενο του WebElement. Παρέχει API για την εύρεση των στοιχείων και την ανάληψη δράσης, όπως εισαγωγή κειμένου σε πλαίσια κειμένου, κλικ στα κουμπιά κ.λπ. Θα δούμε τις διαθέσιμες μεθόδους για πρόσβαση σε κάθε στοιχείο φόρμας.

Σε αυτό το σεμινάριο, θα δούμε πώς να προσδιορίσουμε τα ακόλουθα στοιχεία φόρμας

  • Εισαγωγή στο WebElement, findElement (), findElements ()
  • Κουτί εισαγωγής
  • Εισαγωγή τιμών σε κουτιά εισόδου
  • Διαγραφή τιμών σε πλαίσια εισαγωγής
  • Κουμπιά
  • Υποβολή κουμπιών
  • Πλήρης κωδικός
  • Αντιμετώπιση προβλημάτων

Εισαγωγή στο WebElement, findElement (), findElements ()

Το Selenium Web Driver ενσωματώνει ένα απλό στοιχείο φόρμας ως αντικείμενο του WebElement.

Υπάρχουν διάφορες τεχνικές με τις οποίες το WebDriver προσδιορίζει τα στοιχεία φόρμας με βάση τις διαφορετικές ιδιότητες των στοιχείων του Ιστού, όπως ID, Όνομα, Class, XPath, Tagname, CSS Selectors, link Text κ.λπ.

Το πρόγραμμα οδήγησης Web παρέχει τις ακόλουθες δύο μεθόδους WebElement για την εύρεση των στοιχείων.

  • findElement () - βρίσκει ένα στοιχείο web και επιστρέφει ως αντικείμενο WebElement Selenium.
  • findElements () - επιστρέφει μια λίστα αντικειμένων WebElement που ταιριάζουν με τα κριτήρια εντοπισμού.

Ας δούμε τα αποσπάσματα κώδικα για να λάβουμε ένα μεμονωμένο στοιχείο - Πεδίο κειμένου σε μια ιστοσελίδα ως αντικείμενο του WebElement χρησιμοποιώντας τη μέθοδο findElement (). Θα καλύψουμε τη μέθοδο findElements () για την εύρεση πολλαπλών στοιχείων σε επόμενα σεμινάρια.

Βήμα 1: Πρέπει να εισαγάγουμε αυτό το πακέτο για να δημιουργήσουμε αντικείμενα του Web Elements

Βήμα 2: Πρέπει να καλέσουμε τη μέθοδο findElement () που είναι διαθέσιμη στην κλάση WebDriver και να λάβουμε ένα αντικείμενο του WebElement.

Ανατρέξτε παρακάτω για να δείτε πώς γίνεται.

Κουτί εισαγωγής

Τα πλαίσια εισόδου αναφέρονται σε έναν από αυτούς τους δύο τύπους:

  1. Πεδία κειμένου - Πλαίσια κειμένου εισόδου σεληνίου που αποδέχονται τις δακτυλογραφημένες τιμές και τις εμφανίζουν ως έχουν.
  2. Πεδία κωδικού πρόσβασης - πλαίσια κειμένου που δέχονται δακτυλογραφημένες τιμές αλλά τις καλύπτουν ως μια σειρά ειδικών χαρακτήρων (συνήθως κουκκίδες και αστερίσκους) για να αποφευχθούν οι ευαίσθητες τιμές που θα εμφανίζονται.

Εντοπιστές

Η μέθοδος findElement () παίρνει μια παράμετρο που είναι εντοπιστής του στοιχείου. Διαφορετικοί εντοπιστές όπως By.id (), By.name (), By.xpath (), By.CSSSelector () κ.λπ. εντοπίζουν τα στοιχεία στη σελίδα χρησιμοποιώντας τις ιδιότητές τους όπως "" "id, όνομα ή διαδρομή, και τα λοιπά.

Μπορείτε να χρησιμοποιήσετε προσθήκες όπως το Fire path για να λάβετε βοήθεια σχετικά με τη λήψη του αναγνωριστικού, του xpath κ.λπ. των στοιχείων.

Η χρήση του παραδείγματος ιστότοπου http://demo.guru99.com/test/login.html που δίνεται παρακάτω είναι ο κωδικός για τον εντοπισμό του πεδίου κειμένου "Διεύθυνση ηλεκτρονικού ταχυδρομείου" χρησιμοποιώντας το αναγνωριστικό αναγνώρισης ταυτότητας και το πεδίο "Κωδικός πρόσβασης" χρησιμοποιώντας το εργαλείο εντοπισμού ονόματος.

  1. Το πεδίο κειμένου email βρίσκεται από το Id
  2. Το πεδίο κωδικού πρόσβασης βρίσκεται στο όνομα

sendkeys στο Σελήνιο

Το sendkeys () στο Selenium είναι μια μέθοδος που χρησιμοποιείται για την εισαγωγή περιεχομένου με δυνατότητα επεξεργασίας στα πεδία κειμένου και κωδικού πρόσβασης κατά την εκτέλεση της δοκιμής. Αυτά τα πεδία προσδιορίζονται χρησιμοποιώντας εντοπιστές όπως όνομα, κλάση, αναγνωριστικό, κ.λπ. Είναι μια μέθοδος διαθέσιμη στο στοιχείο ιστού. Σε αντίθεση με τη μέθοδο τύπου, η μέθοδος sendkeys () δεν αντικαθιστά το υπάρχον κείμενο σε οποιοδήποτε πλαίσιο κειμένου.

Εισαγωγή τιμών σε κουτιά εισόδου

Για να εισαγάγετε κείμενο στα πεδία κειμένου και τα πεδία κωδικού πρόσβασης, το sendKeys () είναι η μέθοδος που είναι διαθέσιμη στο WebElement στο Σελήνιο.

Χρησιμοποιώντας το ίδιο παράδειγμα του http://demo.guru99.com/test/login.html ιστότοπου, μπορείτε να βρείτε τα πεδία "Κείμενο" και "Κωδικός πρόσβασης" και να εισάγουμε κείμενο στο Σελήνιο.

  1. Βρείτε το πεδίο κειμένου "Διεύθυνση email" χρησιμοποιώντας τον εντοπισμό αναγνωριστικών.
  2. Βρείτε το πεδίο "Κωδικός πρόσβασης" χρησιμοποιώντας το εργαλείο εντοπισμού ονόματος
  3. Εισαγάγετε κείμενο στη "Διεύθυνση ηλεκτρονικού ταχυδρομείου" χρησιμοποιώντας τη μέθοδο Selenium sendkeys.
  4. Εισαγάγετε έναν κωδικό πρόσβασης στο πεδίο "Κωδικός πρόσβασης" χρησιμοποιώντας τη μέθοδο sendKeys ().

Διαγραφή τιμών σε πλαίσια εισαγωγής

Η μέθοδος Clear () χρησιμοποιείται για τη διαγραφή του κειμένου σε ένα πλαίσιο εισαγωγής. Αυτή η μέθοδος δεν χρειάζεται παράμετρο . Το παρακάτω απόσπασμα κώδικα θα διαγράψει το κείμενο από τα πεδία Email ή Password

Κουμπιά

Μπορείτε να αποκτήσετε πρόσβαση στο κουμπί κλικ Selenium χρησιμοποιώντας τη μέθοδο κλικ ().

Στο παραπάνω παράδειγμα

  1. Βρείτε το κουμπί για να συνδεθείτε
  2. Κάντε κλικ στο κουμπί "Σύνδεση" στη σελίδα σύνδεσης του ιστότοπου για να συνδεθείτε στον ιστότοπο.

Υποβολή κουμπιών

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

Όταν χρησιμοποιείται η υποβολή (), το WebDriver θα αναζητήσει το DOM για να μάθει σε ποια μορφή ανήκει το στοιχείο και, στη συνέχεια, ενεργοποιεί τη λειτουργία υποβολής του.

Πλήρης κωδικός

Εδώ είναι ο πλήρης κωδικός εργασίας

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;εισαγωγή org.openqa.selenium. *;φόρμα δημόσιας τάξης {Δημόσιο στατικό κενό (String [] args) {// δήλωση και παρουσίαση αντικειμένων / μεταβλητώνSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Αποκτήστε το WebElement που αντιστοιχεί στη διεύθυνση email (TextField)WebElement email = driver.findElement (By.id ("email"));// Αποκτήστε το WebElement που αντιστοιχεί στο πεδίο κωδικού πρόσβασηςΚωδικός πρόσβασης WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη Javascript για να τη δείτε.");password.sendKeys ("abcdefghlkjl");System.out.println ("Σύνολο πεδίου κειμένου");// Διαγραφή τιμών στο πλαίσιο κειμένουemail.clear ();password.clear ();System.out.println ("Το πεδίο κειμένου διαγράφηκε");// Βρείτε το κουμπί υποβολήςWebElement login = driver.findElement (By.id ("SubmitLogin"));// Χρησιμοποιώντας τη μέθοδο κλικ για υποβολή φόρμαςemail.sendKeys (" Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη Javascript για να τη δείτε."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Έγινε σύνδεση με κλικ"); // χρησιμοποιώντας τη μέθοδο υποβολής για να υποβάλετε τη φόρμα. Υποβολή που χρησιμοποιείται στο πεδίο password.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Πρέπει να ενεργοποιήσετε τη JavaScript για να τη δείτε.") driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). υποβολή (); System.out.println ("Η σύνδεση έγινε με Υποβολή"); //driver.close (); }}

Αντιμετώπιση προβλημάτων

Εάν συναντήσετε NoSuchElementException () κατά την εύρεση στοιχείων, αυτό σημαίνει ότι το στοιχείο δεν βρίσκεται στη σελίδα στο σημείο όπου το πρόγραμμα οδήγησης Web είχε πρόσβαση στη σελίδα.

  1. Ελέγξτε ξανά τον εντοπιστή σας χρησιμοποιώντας το Firepath ή το Inspect Element στο Chrome.
  2. Ελέγξτε αν η τιμή που χρησιμοποιήσατε στον κώδικα είναι διαφορετική από αυτήν για το στοιχείο στο Firepath τώρα.
  3. Ορισμένες ιδιότητες είναι δυναμικές για λίγα στοιχεία. Σε περίπτωση που διαπιστώσετε ότι η τιμή είναι διαφορετική και αλλάζει δυναμικά, μπορείτε να χρησιμοποιήσετε το By.xpath () ή το By.cssSelector () που είναι πιο αξιόπιστοι αλλά περίπλοκοι τρόποι.
  4. Μερικές φορές, θα μπορούσε επίσης να είναι ένα πρόβλημα αναμονής, δηλαδή, το πρόγραμμα οδήγησης Web εκτέλεσε τον κωδικό σας, ακόμη και πριν από τη φόρτωση της σελίδας, κλπ.
  5. Προσθέστε μια αναμονή πριν το findElement () χρησιμοποιώντας έμμεσες ή ρητές αναμονές.

Περίληψη

  • Ο παρακάτω πίνακας συνοψίζει τις εντολές για πρόσβαση σε κάθε τύπο στοιχείου που συζητήθηκε παραπάνω
Στοιχείο Εντολή Περιγραφή
Κουτί εισαγωγής αποστολή κλειδιών () χρησιμοποιείται για την εισαγωγή τιμών σε πλαίσια κειμένου
Σαφή() χρησιμοποιείται για την εκκαθάριση πλαισίων κειμένου της τρέχουσας τιμής του
Συνδέσεις Κάντε κλικ() χρησιμοποιείται για να κάνετε κλικ στο σύνδεσμο και περιμένετε να ολοκληρωθεί η φόρτωση της σελίδας πριν προχωρήσετε στην επόμενη εντολή.
Κουμπί υποβολής υποβάλλουν()
  • Το WebDriver επιτρέπει την επιλογή περισσότερων από μία επιλογών σε ένα στοιχείο πολλαπλής επιλογής.
  • Μπορείτε να χρησιμοποιήσετε τη μέθοδο υποβολής () σε οποιοδήποτε στοιχείο της φόρμας. Το WebDriver θα ενεργοποιήσει αυτόματα τη συνάρτηση υποβολής της φόρμας στην οποία ανήκει αυτό το στοιχείο.