WebElement σε Selenium: ΚείμενοBox, Κουμπί, sendkeys(), κλικ()
WebElement σε Selenium
Οι φόρμες είναι τα θεμελιώδη στοιχεία Ιστού για τη λήψη πληροφοριών από τους επισκέπτες του ιστότοπου. Οι φόρμες Ιστού έχουν διαφορετικά στοιχεία GUI, όπως πλαίσια κειμένου, πεδία κωδικού πρόσβασης, πλαίσια ελέγχου, κουμπιά επιλογής, αναπτυσσόμενα μενού, είσοδοι αρχείων κ.λπ.
Θα δούμε πώς να αποκτήσετε πρόσβαση σε αυτά τα διαφορετικά στοιχεία φόρμας χρησιμοποιώντας Selenium Πρόγραμμα οδήγησης Web με Java. Selenium ενσωματώνει κάθε στοιχείο φόρμας ως αντικείμενο του WebElement. Παρέχει API για την εύρεση των στοιχείων και την ανάληψη δράσης σε αυτά, όπως εισαγωγή κειμένου σε πλαίσια κειμένου, κλικ στα κουμπιά κ.λπ. Θα δούμε τις μεθόδους που είναι διαθέσιμες για πρόσβαση σε κάθε στοιχείο φόρμας.
Εισαγωγή στο WebElement, findElement(), findElements()
Selenium Το πρόγραμμα οδήγησης Web ενσωματώνει ένα απλό στοιχείο φόρμας ως αντικείμενο WebElement.
Υπάρχουν διάφορες τεχνικές με τις οποίες το WebDriver προσδιορίζει τα στοιχεία της φόρμας με βάση τις διαφορετικές ιδιότητες των στοιχείων Web, όπως ID, Name, Class, XPath, Tagname, CSS Selectors, Link Text κ.λπ.
Το πρόγραμμα οδήγησης Web παρέχει τις ακόλουθες δύο μεθόδους WebElement για την εύρεση των στοιχείων.
- findElement() – βρίσκει ένα μεμονωμένο στοιχείο web και επιστρέφει ως στοιχείο Web Selenium αντικείμενο.
- findElements() – επιστρέφει μια λίστα αντικειμένων WebElement που ταιριάζουν με τα κριτήρια εντοπισμού.
Ας δούμε τα αποσπάσματα κώδικα για να λάβουμε ένα μεμονωμένο στοιχείο – Πεδίο κειμένου σε μια ιστοσελίδα ως αντικείμενο του WebElement χρησιμοποιώντας τη μέθοδο findElement(). Θα καλύψουμε τη μέθοδο findElements() για την εύρεση πολλαπλών στοιχείων σε επόμενα σεμινάρια.
Βήμα 1) Πρέπει να εισαγάγουμε αυτό το πακέτο για να δημιουργήσουμε αντικείμενα των Web Elements
Βήμα 2) Πρέπει να καλέσουμε τη μέθοδο findElement() που είναι διαθέσιμη στην κλάση WebDriver και να πάρουμε ένα αντικείμενο του WebElement.
Ανατρέξτε παρακάτω για να δείτε πώς γίνεται.
Selenium Εισαγωγή κειμένου
Τα πλαίσια εισαγωγής αναφέρονται σε έναν από αυτούς τους δύο τύπους:
- Πεδία κειμένου- Selenium εισάγετε πλαίσια κειμένου που δέχονται πληκτρολογημένες τιμές και τις εμφανίζουν ως έχουν.
- Πεδία κωδικού πρόσβασης– πλαίσια κειμένου που δέχονται πληκτρολογημένες τιμές αλλά τις καλύπτουν ως μια σειρά από ειδικούς χαρακτήρες (συνήθως κουκκίδες και αστερίσκους) για να αποφευχθεί η εμφάνιση ευαίσθητων τιμών.
Εντοπιστές
Η μέθοδος findElement() παίρνει μια παράμετρο που είναι ένας εντοπιστής στο στοιχείο. Διαφορετικοί εντοπιστές όπως By.id(), By.name(), By.xpath(), By.CSSSelector() κ.λπ. εντοπίζουν τα στοιχεία στη σελίδα χρησιμοποιώντας τις ιδιότητές τους όπως """ id, όνομα ή διαδρομή κ.λπ.
Μπορείτε να χρησιμοποιήσετε πρόσθετα όπως το Fire path για να λάβετε βοήθεια σχετικά με τη λήψη του αναγνωριστικού, του xpath κ.λπ. των στοιχείων.
Χρησιμοποιώντας το παράδειγμα τοποθεσίας https://demo.guru99.com/test/login.html που δίνεται παρακάτω είναι ο κωδικός για τον εντοπισμό του πεδίου κειμένου «Διεύθυνση ηλεκτρονικού ταχυδρομείου» χρησιμοποιώντας τον εντοπιστή αναγνωριστικού και το πεδίο «Κωδικός πρόσβασης» χρησιμοποιώντας τον εντοπιστή ονόματος.
- Το πεδίο κειμένου email βρίσκεται κατά Id
- Το πεδίο κωδικού πρόσβασης βρίσκεται με το όνομα
κλειδιά αποστολής Selenium
sendkeys() σε Selenium είναι μια μέθοδος που χρησιμοποιείται για την εισαγωγή επεξεργάσιμου περιεχομένου στα πεδία κειμένου και κωδικού πρόσβασης κατά την εκτέλεση της δοκιμής. Αυτά τα πεδία προσδιορίζονται χρησιμοποιώντας εντοπιστές όπως όνομα, κλάση, αναγνωριστικό κ.λπ. Είναι μια μέθοδος διαθέσιμη στο στοιχείο Ιστού. Σε αντίθεση με τη μέθοδο τύπου, η μέθοδος sendkeys() δεν αντικαθιστά το υπάρχον κείμενο σε οποιοδήποτε πλαίσιο κειμένου.
Πώς να εισάγετε κείμενο Selenium
Για να εισαγάγετε κείμενο στα πεδία κειμένου και κωδικού πρόσβασης, η sendKeys() είναι η διαθέσιμη μέθοδος στο WebElement στο Selenium.
Χρησιμοποιώντας το ίδιο παράδειγμα του https://demo.guru99.com/test/login.html site, εδώ βρίσκουμε τα πεδία Κείμενο και Κωδικός πρόσβασης και εισάγουμε κείμενο Selenium.
- Βρείτε το πεδίο κειμένου "Διεύθυνση Email" χρησιμοποιώντας τον εντοπιστή αναγνωριστικών.
- Βρείτε το πεδίο "Κωδικός πρόσβασης" χρησιμοποιώντας τον εντοπιστή ονομάτων
- Εισαγάγετε κείμενο στη «Διεύθυνση Email» χρησιμοποιώντας το Selenium μέθοδος sendkeys.
- Εισαγάγετε έναν κωδικό πρόσβασης στο πεδίο "Password" χρησιμοποιώντας τη μέθοδο sendKeys().
Διαγραφή τιμών στην είσοδο Boxes
The Σαφή() Η μέθοδος χρησιμοποιείται για τη διαγραφή του κειμένου σε ένα πλαίσιο εισαγωγής. Αυτή η μέθοδος δεν χρειάζεται παράμετρο. Το παρακάτω απόσπασμα κώδικα θα διαγράψει το κείμενο από τα πεδία Email ή Κωδικός πρόσβασης
Selenium Κάντε κλικ στο κουμπί Κουμπιά
The Selenium Μπορείτε να προσπελάσετε το κουμπί κλικ χρησιμοποιώντας τη μέθοδο click().
Στο παραπάνω παράδειγμα
- Βρείτε το κουμπί για να συνδεθείτε
- Κάντε κλικ στο κουμπί «Σύνδεση» στη σελίδα σύνδεσης του ιστότοπου για να συνδεθείτε στον ιστότοπο.
Selenium Κουμπιά υποβολής
Τα κουμπιά υποβολής χρησιμοποιούνται για την υποβολή ολόκληρης της φόρμας στον διακομιστή. Μπορούμε είτε να χρησιμοποιήσουμε τη μέθοδο κλικ () στο στοιχείο Ιστού σαν ένα κανονικό κουμπί όπως κάναμε παραπάνω είτε να χρησιμοποιήσουμε τη μέθοδο υποβολής () σε οποιοδήποτε στοιχείο ιστού στη φόρμα ή στο ίδιο το κουμπί υποβολής.
Όταν χρησιμοποιείται η submit(), το WebDriver θα αναζητήσει το DOM για να μάθει σε ποια μορφή ανήκει το στοιχείο και, στη συνέχεια, θα ενεργοποιήσει τη λειτουργία υποβολής.
Πλήρης κώδικας
Εδώ είναι ο πλήρης κώδικας εργασίας
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.*; public class Form { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String baseUrl = "https://demo.guru99.com/test/login.html"; driver.get(baseUrl); // Get the WebElement corresponding to the Email Address(TextField) WebElement email = driver.findElement(By.id("email")); // Get the WebElement corresponding to the Password Field WebElement password = driver.findElement(By.name("passwd")); email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); System.out.println("Text Field Set"); // Deleting values in the text box email.clear(); password.clear(); System.out.println("Text Field Cleared"); // Find the submit button WebElement login = driver.findElement(By.id("SubmitLogin")); // Using click method to submit form email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); login.click(); System.out.println("Login Done with Click"); //using submit method to submit the form. Submit used on password field driver.get(baseUrl); driver.findElement(By.id("email")).sendKeys("abcd@gmail.com"); driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl"); driver.findElement(By.id("SubmitLogin")).submit(); System.out.println("Login Done with Submit"); //driver.close(); } }
Αντιμετώπιση προβλημάτων
Εάν συναντήσετε NoSuchElementException() κατά την εύρεση στοιχείων, σημαίνει ότι το στοιχείο δεν βρίσκεται στη σελίδα στο σημείο που το πρόγραμμα οδήγησης Web είχε πρόσβαση στη σελίδα.
- Ελέγξτε ξανά τον εντοπιστή σας χρησιμοποιώντας το Firepath ή το Inspect Element στο Chrome.
- Ελέγξτε αν η τιμή που χρησιμοποιήσατε στον κώδικα είναι διαφορετική από αυτή για το στοιχείο στο Firepath τώρα.
- Ορισμένες ιδιότητες είναι δυναμικές για λίγα στοιχεία. Σε περίπτωση που διαπιστώσετε ότι η τιμή είναι διαφορετική και αλλάζει δυναμικά, σκεφτείτε να χρησιμοποιήσετε By.xpath() ή By.cssSelector() που είναι πιο αξιόπιστοι αλλά πολύπλοκοι τρόποι.
- Μερικές φορές, μπορεί να είναι και πρόβλημα αναμονής, π.χ., το πρόγραμμα οδήγησης Web εκτέλεσε τον κώδικά σας ακόμη και πριν ολοκληρωθεί η φόρτωση της σελίδας, κ.λπ.
- Προσθέστε μια αναμονή πριν από το findElement() χρησιμοποιώντας σιωπηρές ή ρητές αναμονές.
Σύνοψη
- Ο παρακάτω πίνακας συνοψίζει τις εντολές για πρόσβαση σε κάθε τύπο στοιχείου που συζητήθηκε παραπάνω
Στοιχείο | εντολή | Descriptιόν |
---|---|---|
Εισαγωγή Box | αποστολή κλειδιών () | χρησιμοποιείται για την εισαγωγή τιμών σε πλαίσια κειμένου |
Σαφή() | χρησιμοποιείται για την εκκαθάριση πλαισίων κειμένου από την τρέχουσα τιμή του | |
Συνδέσμοι | Κάντε κλικ() | χρησιμοποιείται για να κάνετε κλικ στον σύνδεσμο και να περιμένετε να ολοκληρωθεί η φόρτωση της σελίδας πριν προχωρήσετε στην επόμενη εντολή. |
Υποβολή κουμπιού | υποβάλλουν() |
- Το WebDriver επιτρέπει την επιλογή περισσότερων από μία επιλογών σε ένα πολλαπλό στοιχείο SELECT.
- Μπορείτε να χρησιμοποιήσετε τη μέθοδο submit() σε οποιοδήποτε στοιχείο της φόρμας. Το WebDriver θα ενεργοποιήσει αυτόματα τη λειτουργία υποβολής της φόρμας στην οποία ανήκει αυτό το στοιχείο.