FindElement από XPath σε Selenium

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

FindElement από XPath σε Selenium αναγνωρίζει μοναδικά ένα μεμονωμένο στοιχείο ιστού σε μια σελίδα, ενώ το FindElements επιστρέφει μια πλήρη λίστα με τα αντίστοιχα στοιχεία. Και οι δύο εντολές δέχονται ένα αντικείμενο By locator που καλύπτει στρατηγικές ID, Name, Class Name και XPath.

  • Βασική Αρχή: Το FindElement επιστρέφει το πρώτο WebElement που ταιριάζει. Το FindElements επιστρέφει μια λίστα με ευρετήριο από το μηδέν, όπως ένας πίνακας.
  • ⚠️ Χειρισμός εξαιρέσεων: Το FindElement εμφανίζει την συνάρτηση NoSuchElementException όταν δεν υπάρχει αντιστοιχία, ενώ το FindElements επιστρέφει μια κενή λίστα αντί να αποτύχει.
  • 🧭 Στρατηγικές εντοπισμού: Επιλέξτε μεταξύ των εντολών ID, Name, Class Name, Tag Name, Link Text, Partial Link Text και XPath.
  • 🧩 Εστίαση στην Υλοποίηση: Μεταβίβαση ενός αντικειμένου By με μια μοναδική τιμή εντοπιστή για αξιόπιστη στόχευση στοιχείων σε σκριπτ WebDriver.
  • 🚀 Πρακτική εφαρμογη: Εργασίας Java Παραδείγματα δείχνουν το κλικ σε ένα κουμπί επιλογής και την επανάληψη μιας λίστας στοιχείων σε μια σελίδα επίδειξης.

FindElement από XPath σε Selenium

In Selenium Πρόγραμμα οδήγησης ιστού, ΕύρεσηΣτοιχείου και ΕύρεσηΣτοιχείων είναι οι βασικές εντολές που χρησιμοποιούνται για τον εντοπισμό στοιχείων ιστού σε μια σελίδα πριν από την εκτέλεση οποιασδήποτε ενέργειας σε αυτά, όπως ένα κλικ ή μια εισαγωγή κειμένου.

Γιατί χρειάζεστε την εντολή Find Element(s);

Η αλληλεπίδραση με μια ιστοσελίδα απαιτεί από τον χρήστη να εντοπίσει πρώτα το στοιχείο ιστού. Η εντολή "Εύρεση στοιχείου" χρησιμοποιείται για την μοναδική αναγνώριση ενός στοιχείου ιστού μέσα στην ιστοσελίδα, ενώ η εντολή "Εύρεση στοιχείων" χρησιμοποιείται για την αναγνώριση μιας λίστας στοιχείων ιστού. Ένα στοιχείο μπορεί να αναγνωριστεί χρησιμοποιώντας πολλαπλές στρατηγικές εντοπισμού όπως Αναγνωριστικό, Όνομα, Όνομα Κλάσης, Κείμενο Συνδέσμου, Μερικό Κείμενο Συνδέσμου, Όνομα Ετικέτας και XPath.

Σύνταξη εντολής FindElement

Παρακάτω είναι η σύνταξη της εντολής FindElement στο Selenium WebDriver:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Η εντολή FindElement δέχεται το αντικείμενο By ως παράμετρο και επιστρέφει ένα μόνο αντικείμενο τύπου WebElement. Το αντικείμενο By, με τη σειρά του, μπορεί να χρησιμοποιηθεί με διάφορες στρατηγικές εντοπισμού όπως ID, Name, Class Name, XPath, κ.λπ.

Η Στρατηγική Εντοπιστή μπορεί να έχει οποιαδήποτε από τις ακόλουθες τιμές:

  • ID
  • Όνομα
  • Ονομα τάξης
  • Όνομα ετικέτας
  • Κείμενο συνδέσμου
  • Μερικό κείμενο συνδέσμου
  • XPath

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

Παράδειγμα:

WebElement loginLink = driver.findElement(By.linkText("Login"));

Παράδειγμα: Βρείτε το στοιχείο στο Selenium

Η ακόλουθη εφαρμογή επίδειξης χρησιμοποιείται για την εμφάνιση της εντολής FindElement σε δράση:

https://demo.guru99.com/test/ajax.html

Σενάριο:

Βήμα 1: Ανοίξτε το AUT

Βήμα 2: Βρείτε και κάντε κλικ στο κουμπί επιλογής και, στη συνέχεια, κάντε κλικ στο κουμπί Έλεγχος

package com.sample.stepdefinitions;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://demo.guru99.com/test/ajax.html");

// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();

//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

Σύνταξη εντολής FindElements

Όταν χρειάζεστε κάθε στοιχείο που ταιριάζει με έναν εντοπιστή και όχι μόνο το πρώτο, χρησιμοποιήστε το FindElements. Παρακάτω είναι η σύνταξή του:

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Η εντολή FindElements δέχεται το αντικείμενο By ως παράμετρο και επιστρέφει μια λίστα στοιχείων ιστού. Επιστρέφει μια κενή λίστα εάν δεν βρεθούν στοιχεία χρησιμοποιώντας τη δεδομένη στρατηγική εντοπιστή και την τιμή εντοπιστή.

Παράδειγμα:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Παράδειγμα: Βρείτε στοιχεία στο Selenium

Η ίδια εφαρμογή επίδειξης χρησιμοποιείται για να δείξει πώς το FindElements επαναλαμβάνει μια λίστα με αντίστοιχα στοιχεία.

Σενάριο:

Βήμα 1: Ανοίξτε το URL για Εφαρμογή υπό Δοκιμή

Βήμα 2: Βρείτε το κείμενο των κουμπιών επιλογής και εκτυπώστε το στην κονσόλα εξόδου

package com.sample.stepdefinitions;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

Βρείτε Στοιχείο vs Βρείτε Στοιχεία

Παρακάτω παρατίθενται οι κύριες διαφορές μεταξύ των εντολών Find Element και Find Elements:

Βρείτε Στοιχείο vs Βρείτε Στοιχεία σε Selenium

Εύρεση στοιχείου Εύρεση στοιχείων
Επιστρέφει το πρώτο στοιχείο ιστού εάν βρεθούν πολλά στοιχεία ιστού με τον ίδιο εντοπιστή Επιστρέφει μια λίστα στοιχείων ιστού
Εμφανίζει την εξαίρεση NoSuchElementException εάν δεν υπάρχουν στοιχεία που να ταιριάζουν με τη στρατηγική εντοπιστή. Επιστρέφει μια κενή λίστα εάν δεν υπάρχουν στοιχεία ιστού που να ταιριάζουν με τη στρατηγική εντοπισμού
Η εύρεση στοιχείου από το XPath θα βρει μόνο ένα στοιχείο ιστού. Θα βρει μια συλλογή στοιχείων που ταιριάζουν με τη στρατηγική εντοπιστή
Δεν εφαρμόζεται Κάθε στοιχείο ιστού καταχωρείται με έναν αριθμό που ξεκινά από το 0, όπως ακριβώς ένας πίνακας

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

Χρήση Selenium έμμεσες ή ρητές αναμονές έτσι ώστε το πρόγραμμα οδήγησης να ελέγχει τη σελίδα μέχρι να εμφανιστεί το στοιχείο. Οι σαφείς αναμονές με το WebDriverWait και οι αναμενόμενες συνθήκες είναι η πιο αξιόπιστη προσέγγιση για δυναμικές σελίδες που βασίζονται σε AJAX.

Το ID είναι ο ταχύτερος και πιο αξιόπιστος εντοπιστής, επειδή τα προγράμματα περιήγησης το καταχωρούν απευθείας στο ευρετήριο. Οι επιλογείς CSS είναι γενικά ταχύτεροι από το XPath, επομένως κρατήστε το XPath για περιπτώσεις όπου δεν υπάρχει διαθέσιμο μοναδικό ID, Όνομα ή κλάση.

Ναι. Οι βοηθοί δοκιμών με τεχνητή νοημοσύνη μπορούν να αναλύσουν το DOM και να προτείνουν αυτόματα σταθερούς εντοπιστές XPath ή CSS, μειώνοντας τον χρόνο χειροκίνητης επιθεώρησης. Revδημιουργήθηκαν εντοπιστές για μοναδικότητα πριν από την προσθήκη τους σε σουίτες δοκιμών παραγωγής.

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

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