WebElement σε Selenium

⚡ Έξυπνη Σύνοψη

WebElement σε Selenium αναπαριστά κάθε στοιχείο ελέγχου φόρμας ως προγραμματιζόμενο αντικείμενο, επιτρέποντας στους δοκιμαστές να αλληλεπιδρούν με πεδία κειμένου, πλαίσια ελέγχου, κουμπιά επιλογής και στοιχεία υποβολής χρησιμοποιώντας τις μεθόδους findElement, sendKeys, κλικ, διαγραφή και υποβολή μέσω Java παραδείγματα κώδικα.

  • 🧩 Ακρίβεια εντοπιστή: Προσδιορίστε τα στοιχεία φόρμας με βάση το id, το name, το xpath ή τον επιλογέα CSS μέσω της findElement() για να διασφαλίσετε σταθερή αλληλεπίδραση με το DOM.
  • ✍️ Χειρισμός εισόδου: Αποστολή επεξεργάσιμου κειμένου σε πεδία χρησιμοποιώντας τη συνάρτηση sendKeys() χωρίς αντικατάσταση υπαρχουσών τιμών κατά την αυτοματοποιημένη εκτέλεση.
  • 🧹 Επαναφορά πεδίου: Διαγράψτε τα πλαίσια εισαγωγής μέσω της μεθόδου clear() πριν εισαγάγετε ξανά δεδομένα, αποτρέποντας την εμφάνιση υπολειμματικών τιμών σε μεταγενέστερους ισχυρισμούς.
  • 🖱️ Αλληλεπίδραση κουμπιών: Ενεργοποιήστε ενέργειες σύνδεσης ή πλοήγησης μέσω της μεθόδου click() στην αντίστοιχη αναφορά WebElement.
  • 📨 Υποβολή φόρμας: Χρησιμοποιήστε την submit() σε οποιοδήποτε στοιχείο μέσα σε μια φόρμα, ώστε το WebDriver να αποστέλλει αυτόματα τον γονικό χειριστή υποβολής φόρμας.
  • ️ Συμβουλή σταθερότητας: Προσθέστε έμμεσες ή ρητές αναμονές πριν από τις κλήσεις findElement() για να αποτρέψετε το NoSuchElementException σε δυναμικά φορτωμένες σελίδες.

WebElement σε Selenium

WebElement σε Selenium

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

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

Εισαγωγή στο WebElement FindElement,FindElements

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

Selenium Το WebDriver αντιπροσωπεύει ένα απλό στοιχείο φόρμας ως αντικείμενο του Στοιχείο Ιστού.

Το WebDriver αναγνωρίζει στοιχεία φόρμας χρησιμοποιώντας διαφορετικές ιδιότητες του στοιχείου web, όπως ID, Name, Class, XPath, Όνομα ετικέτας, επιλογείς CSS και κείμενο συνδέσμου.

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

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

Το παρακάτω παράδειγμα δείχνει πώς να ανακτήσετε ένα μόνο στοιχείο, ένα πεδίο κειμένου σε μια ιστοσελίδα, ως αντικείμενο WebElement χρησιμοποιώντας τη μέθοδο findElement(). Η μέθοδος findElements() για την εύρεση πολλαπλών στοιχείων καλύπτεται σε επόμενα εκπαιδευτικά βίντεο.

Βήμα 1) Εισαγάγετε το πακέτο που απαιτείται για τη δημιουργία αντικειμένων WebElement.

Βήμα 2) Καλέστε τη μέθοδο findElement() που είναι διαθέσιμη στην κλάση WebDriver για να ανακτήσετε ένα αντικείμενο WebElement, όπως φαίνεται παρακάτω.

Selenium Εισαγωγή κειμένου

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

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

    Selenium Εισαγωγή κειμένου

Εντοπιστές

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

Μπορείτε να χρησιμοποιήσετε πρόσθετα όπως το FirePath για να λάβετε τις τιμές id, xpath και άλλες τιμές εντοπιστή για στοιχεία.

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

Εντοπιστές

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

κλειδιά αποστολής Selenium

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

Πώς να εισάγετε κείμενο Selenium

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

Χρησιμοποιώντας το ίδιο παράδειγμα του https://demo.guru99.com/test/login.html, το παρακάτω απόσπασμα εντοπίζει το πεδίο κειμένου και το πεδίο κωδικού πρόσβασης και εισάγει κείμενο σε Selenium.

Κείμενο στο Selenium

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

Διαγραφή τιμών στην είσοδο Boxes

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

Διαγραφή τιμών στην είσοδο Boxes

Selenium Κάντε κλικ στο κουμπί Κουμπιά

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

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

  1. Βρείτε το κουμπί για να συνδεθείτε.
  2. Κάντε κλικ στο κουμπί «Είσοδος» στη σελίδα σύνδεσης του ιστότοπου για να επαληθεύσετε τον κωδικό πρόσβασής σας.

Selenium Κάντε κλικ στο κουμπί Κουμπιά

Selenium Κουμπιά υποβολής

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

Selenium Κουμπιά υποβολής

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

Πλήρης Code

Εδώ είναι ο πλήρης κώδικας λειτουργίας.

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() κατά την εύρεση στοιχείων, το στοιχείο δεν υπάρχει στη σελίδα τη στιγμή που το WebDriver το απέκτησε πρόσβαση σε αυτό.

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

Περίληψη

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

Συχνές Ερωτήσεις

Η findElement() επιστρέφει το πρώτο WebElement που ταιριάζει και ρίχνει NoSuchElementException όταν δεν υπάρχει κανένα. Η findElements() επιστρέφει μια λίστα με WebElements που ταιριάζουν και επιστρέφει μια κενή λίστα όταν κανένα στοιχείο δεν ταιριάζει με τον εντοπιστή.

Ένα WebElement είναι ένα Selenium περιτύλιγμα που εκθέτει μεθόδους αυτοματισμού όπως sendKeys, click και clear. Ένα στοιχείο HTML είναι ο υποκείμενος κόμβος DOM. Το WebDriver εντοπίζει τον κόμβο DOM και επιστρέφει μια αναφορά WebElement για αλληλεπίδραση.

Ναι. Τα εργαλεία με τη βοήθεια της τεχνητής νοημοσύνης αναλύουν το DOM και προτείνουν σταθερούς εντοπιστές χρησιμοποιώντας επιλογείς id, name, relative xpath ή CSS. Μειώνουν την ευθραυστότητα του εντοπιστή εντοπίζοντας μοναδικούς συνδυασμούς χαρακτηριστικών και προτείνοντας εναλλακτικές λύσεις όταν αλλάζει ένα χαρακτηριστικό.

Ναι. Οι εντοπιστές αυτοεπιδιόρθωσης που βασίζονται στην τεχνητή νοημοσύνη επανασυνδέουν αυτόματα ένα WebElement όταν αλλάζει ένα χαρακτηριστικό. Αυτό μειώνει τις ασταθείς αποτυχίες, μειώνει την προσπάθεια συντήρησης και διατηρεί Selenium Οι σουίτες είναι σταθερές σε συχνές ενημερώσεις UI σε ευέλικτους κύκλους παράδοσης.

Συνήθεις εξαιρέσεις WebElement περιλαμβάνουν τα StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException και TimeoutException. Κάθε μία υποδεικνύει ένα διαφορετικό πρόβλημα DOM, ορατότητας ή συγχρονισμού που θα πρέπει να αντιμετωπιστεί με αναφορές στοιχείων αναμονής ή ανανέωσης.

Συνοψίστε αυτήν την ανάρτηση με: