Πώς να επιλέξετε τιμή από το αναπτυσσόμενο μενού Selenium

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

Επιλέξτε Τιμή από το αναπτυσσόμενο μενού στο Selenium χρησιμοποιεί την ειδική κλάση Select για τον έλεγχο των στοιχείων HTML SELECT. Η κλάση εκθέτει τις μεθόδους selectByVisibleText, selectByValue και selectByIndex που επιλέγουν με ακρίβεια επιλογές και υποστηρίζουν αναπτυσσόμενα μενού πολλαπλής επιλογής.

  • 📦 Εισαγάγετε το πακέτο: Φέρτε την εντολή org.openqa.selenium.support.ui.Select και τυλίξτε το WebElement πριν καλέσετε οποιαδήποτε μέθοδο επιλογής.
  • 🎯 Επιλέξτε τη σωστή μέθοδο: Επιλέξτε selectByVisibleText, selectByValue ή selectByIndex με βάση το εάν το κείμενο εμφάνισης, το χαρακτηριστικό value ή η θέση είναι τα πιο σταθερά.
  • 🔁 Χειρισμός αναπτυσσόμενων μενού πολλαπλής επιλογής: Χρησιμοποιήστε την εντολή isMultiple για να τα εντοπίσετε και αποεπιλέξτε την εντολή All ή την εντολή deselectByVisibleText για να διαγράψετε τις προηγούμενες επιλογές.
  • Επαληθεύστε την επιλογή: Καλέστε την εντολή getFirstSelectedOption για να επιβεβαιώσετε ότι η δοκιμή άλλαξε στην πραγματικότητα την κατάσταση του αναπτυσσόμενου μενού.
  • 🤖 Χρησιμοποιήστε εντοπιστές τεχνητής νοημοσύνης: Οι αυτοθεραπευόμενοι εντοπιστές τεχνητής νοημοσύνης επιδιορθώνουν τα κατεστραμμένα XPaths στοιχείων επιλογής μετά από αλλαγές στο UI, keeping Οι δοκιμές αναπτυσσόμενου μενού είναι σταθερές σε όλες τις κυκλοφορίες.

Επιλέξτε Τιμή από το αναπτυσσόμενο μενού στο Selenium

Σε τι είναι η Κλάση Επιλογής; Selenium?

The Επιλέξτε τάξη σε Selenium είναι μια βοηθητική τάξη από το org.openqa.selenium.support.ui πακέτο που επιτρέπει στο WebDriver να αλληλεπιδρά με HTML <select> στοιχεία. Εκθέτει μεθόδους για την επιλογή και την αποεπιλογή επιλογών με ορατό κείμενο, τιμή ή ευρετήριο, καθώς και για την ανίχνευση του εάν ένα αναπτυσσόμενο μενού δέχεται πολλαπλές επιλογές.

Επειδή Select είναι τακτικό Java κλάση, δημιουργείτε μια παρουσία με την new λέξη-κλειδί και να περάσει το WebElement που δείχνει στο <select> ετικέτα στη σελίδα.

Πώς να επιλέξετε Αναπτυσσόμενο σε Selenium

Πριν από τον χειρισμό ενός αναπτυσσόμενου μενού Selenium, απαιτούνται δύο βήματα:

  1. Εισαγάγετε το πακέτο org.openqa.selenium.support.ui.Select.
  2. Δημιουργήστε το αναπτυσσόμενο μενού ως Select αντικείμενο μέσα Selenium WebDriver.

Για παράδειγμα, ανοίξτε το Mercury Σελίδα εγγραφής εκδρομών (https://demo.guru99.com/test/newtours/register.php) και εντοπίστε το αναπτυσσόμενο μενού «Χώρα».

Επιλέξτε Αναπτυσσόμενο σε Selenium

Βήμα 1) Εισαγάγετε το πακέτο Select.

import org.openqa.selenium.support.ui.Select;

Βήμα 2) Δηλώστε το αναπτυσσόμενο στοιχείο ως παρουσία της κλάσης Select. Στο παρακάτω παράδειγμα, η παρουσία ονομάζεται drpCountry.

Select drpCountry = new Select(driver.findElement(By.name("country")));

Βήμα 3) Ξεκινήστε να ελέγχετε το αναπτυσσόμενο μενού. Χρησιμοποιήστε οποιαδήποτε μέθοδο Επιλογής για να επιλέξετε μια επιλογή. Το παρακάτω δείγμα επιλέγει «ΑΝΤΑΡΚΤΙΚΗ»:

drpCountry.selectByVisibleText("ANTARCTICA");

Επιλέξτε Μέθοδοι στο Selenium

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

1) selectByVisibleText() και deselectByVisibleText()

  • Επιλέγει ή αποεπιλέγει την επιλογή της οποίας το εμφανιζόμενο κείμενο ταιριάζει με την παράμετρο.
  • παράμετρος: το ακριβές κείμενο που εμφανίζεται για την επιλογή.

Παράδειγμα:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() και deselectByValue()

  • Επιλέγει ή αποεπιλέγει την επιλογή της οποίας value Το χαρακτηριστικό ταιριάζει με την παράμετρο.
  • Σημειώστε ότι το εμφανιζόμενο κείμενο και το value Τα χαρακτηριστικά είναι συχνά διαφορετικά, όπως φαίνεται παρακάτω.
  • παράμετρος: της επιλογής value αποδίδουν.

επιλέξτεByValue και αποεπιλέξτεByValue

Παράδειγμα:

drpCountry.selectByValue("234");

3) selectByIndex() και deselectByIndex()

  • Επιλέγει ή αποεπιλέγει την επιλογή στο δεδομένο ευρετήριο. Τα ευρετήρια βασίζονται στο μηδέν.
  • παράμετρος: ο ακέραιος δείκτης της επιλογής.

Παράδειγμα:

drpCountry.selectByIndex(0);

4) είναιΠολλαπλή()

  • Επιστροφές TRUE αν το αναπτυσσόμενο μενού επιτρέπει πολλαπλές επιλογές ταυτόχρονα, διαφορετικά FALSE.
  • παράμετρος: κανένας.

Παράδειγμα:

if (drpCountry.isMultiple()) {
    // do something here
}

5) αποεπιλογήΌλων()

  • Διαγράφει κάθε επιλεγμένη επιλογή. Ισχύει μόνο σε αναπτυσσόμενα μενού πολλαπλής επιλογής.
  • παράμετρος: κανένας.

Παράδειγμα:

drpCountry.deselectAll();

Πλήρης Code των Επιλεγμένων Μεθόδων στο Selenium

Ο ακόλουθος Java Το πρόγραμμα επιδεικνύει την κλάση Select τόσο σε ένα αναπτυσσόμενο μενού μίας επιλογής όσο και σε ένα αναπτυσσόμενο μενού πολλαπλής επιλογής.

package newpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.By;

public class accessDropDown {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        String baseURL = "https://demo.guru99.com/test/newtours/register.php";
        WebDriver driver = new FirefoxDriver();
        driver.get(baseURL);

        // Single-select drop-down
        Select drpCountry = new Select(driver.findElement(By.name("country")));
        drpCountry.selectByVisibleText("ANTARCTICA");

        // Multi-select drop-down
        driver.get("http://jsbin.com/osebed/2");
        Select fruits = new Select(driver.findElement(By.id("fruits")));
        fruits.selectByVisibleText("Banana");
        fruits.selectByIndex(1);
    }
}

Επιλογή στοιχείων σε ένα στοιχείο πολλαπλής επιλογής

The selectByVisibleText() Η μέθοδος λειτουργεί επίσης σε αναπτυσσόμενα μενού πολλαπλής επιλογής. Για παράδειγμα, χρησιμοποιήστε https://jsbin.com/osebed/2 όπως η βάση URLΕμφανίζει ένα αναπτυσσόμενο μενού που δέχεται πολλαπλές επιλογές ταυτόχρονα.

Επιλογή στοιχείων σε ένα στοιχείο πολλαπλής επιλογής

Το παρακάτω απόσπασμα επιλέγει τις δύο πρώτες επιλογές χρησιμοποιώντας selectByVisibleText():

Επιλογή στοιχείων σε κώδικα πολλαπλής επιλογής στοιχείων

Πίνακας αναφοράς μεθόδου

Αυτός ο πίνακας συνοψίζει κάθε μέθοδο Select-class που καλύπτεται παραπάνω για γρήγορη αναζήτηση.

εντολή Περιγραφή
επιλέξτεΜεΟρατόΚείμενο() / αποεπιλέξτεΜεΟρατόΚείμενο() Επιλέγει ή αποεπιλέγει μια επιλογή με βάση το εμφανιζόμενο κείμενό της.
επιλογήΜεΑξία() / αποεπιλογήΜεΑξία() Επιλέγει ή αποεπιλέγει μια επιλογή από την value αποδίδουν.
selectByIndex() / deselectByIndex() Επιλέγει ή αποεπιλέγει μια επιλογή με βάση τον δείκτη που βασίζεται στο μηδέν.
isMultiple() Επιστρέφει την τιμή TRUE εάν το αναπτυσσόμενο μενού επιτρέπει πολλαπλές επιλογές, διαφορετικά επιστρέφει την τιμή FALSE.
αποεπιλογή όλων() Αποεπιλέγει όλες τις προηγουμένως επιλεγμένες επιλογές σε ένα αναπτυσσόμενο μενού πολλαπλής επιλογής.

Για να ελέγξετε τα αναπτυσσόμενα πλαίσια, εισαγάγετε το org.openqa.selenium.support.ui.Select πρώτα το πακέτο, στη συνέχεια δημιουργήστε μια παρουσία Select και καλέστε οποιαδήποτε από τις παραπάνω μεθόδους.

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

Η κλάση Select είναι μια Selenium Βοηθός για στοιχεία HTML SELECT. Περιβάλλει ένα WebElement και εμφανίζει τα selectByVisibleText, selectByValue, selectByIndex, isMultiple και deselectAll για καθαρό αυτοματισμό αναπτυσσόμενου μενού.

Προτιμήστε το selectByValue όταν το χαρακτηριστικό value είναι σταθερό, επειδή οι ετικέτες συχνά αλλάζουν για λόγους τοπικής προσαρμογής. Χρησιμοποιήστε το selectByVisibleText όταν το κείμενο είναι έγκυρο και αποφύγετε το selectByIndex όταν η σειρά των επιλογών ενδέχεται να αλλάξει.

Η κλάση Select λειτουργεί μόνο σε πραγματικές ετικέτες HTML SELECT. Εάν το WebElement είναι ένα div, ul ή ένα προσαρμοσμένο γραφικό στοιχείο που έχει σχεδιαστεί ώστε να μοιάζει με αναπτυσσόμενο μενού, πρέπει να κάνετε κλικ στις επιλογές μέσω του WebElement.click() ή του Actions API.

Καλέστε τη συνάρτηση getFirstSelectedOption() στην περίπτωση Select και επιβεβαιώστε την τιμή getText(). Για αναπτυσσόμενα μενού πολλαπλής επιλογής, επαναλάβετε τη συνάρτηση getAllSelectedOptions() και συγκρίνετε τη λίστα που επιστρέφεται με τις αναμενόμενες επιλογές.

Ναι. Χρησιμοποιήστε την συνάρτηση isMultiple() για να επιβεβαιώσετε ότι το αναπτυσσόμενο μενού επιτρέπει πολλαπλές τιμές και, στη συνέχεια, καλέστε την συνάρτηση selectByVisibleText πολλές φορές ή την συνάρτηση deselectAll() για επαναφορά. Τα αναπτυσσόμενα μενού πολλαπλής επιλογής απαιτούν από το στοιχείο HTML SELECT να δηλώσει το χαρακτηριστικό πολλαπλής επιλογής.

Χρησιμοποιήστε το WebDriverWait με το ExpectedConditions.numberOfElementsToBeMoreThan στον εντοπιστή επιλογών. Αυτό διασφαλίζει ότι τα αναπτυσσόμενα μενού με ασύγχρονη συμπλήρωση είναι έτοιμα πριν από τη δημιουργία της κλάσης Select και την κλήση οποιασδήποτε μεθόδου επιλογής.

Οι αυτοεπιδιορθωτικοί εντοπιστές με τεχνητή νοημοσύνη ανιχνεύουν πότε έχει αλλάξει το id, το όνομα ή η XPath ενός στοιχείου SELECT και μεταβαίνουν σε μια λειτουργική εναλλακτική λύση. Μειώνουν τις ασταθείς αποτυχίες αναπτυσσόμενου μενού σε αγωγούς μετά από επανασχεδιασμούς του UI.

Ναι. Οι βοηθοί κωδικοποίησης τεχνητής νοημοσύνης μετατρέπουν ένα απλό αίτημα, όπως "επιλέξτε χώρα ΑΝΤΑΡΚΤΙΚΗ στη σελίδα μητρώου", σε μια ολοκληρωμένη παρουσία Select με τον σωστό εντοπιστή, την κλήση selectByVisibleText και μια δήλωση επαλήθευσης.

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