FindElement από XPath σε Selenium
⚡ Έξυπνη Σύνοψη
FindElement από XPath σε Selenium αναγνωρίζει μοναδικά ένα μεμονωμένο στοιχείο ιστού σε μια σελίδα, ενώ το FindElements επιστρέφει μια πλήρη λίστα με τα αντίστοιχα στοιχεία. Και οι δύο εντολές δέχονται ένα αντικείμενο By locator που καλύπτει στρατηγικές ID, Name, Class Name και XPath.
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:
| Εύρεση στοιχείου | Εύρεση στοιχείων |
|---|---|
| Επιστρέφει το πρώτο στοιχείο ιστού εάν βρεθούν πολλά στοιχεία ιστού με τον ίδιο εντοπιστή | Επιστρέφει μια λίστα στοιχείων ιστού |
| Εμφανίζει την εξαίρεση NoSuchElementException εάν δεν υπάρχουν στοιχεία που να ταιριάζουν με τη στρατηγική εντοπιστή. | Επιστρέφει μια κενή λίστα εάν δεν υπάρχουν στοιχεία ιστού που να ταιριάζουν με τη στρατηγική εντοπισμού |
| Η εύρεση στοιχείου από το XPath θα βρει μόνο ένα στοιχείο ιστού. | Θα βρει μια συλλογή στοιχείων που ταιριάζουν με τη στρατηγική εντοπιστή |
| Δεν εφαρμόζεται | Κάθε στοιχείο ιστού καταχωρείται με έναν αριθμό που ξεκινά από το 0, όπως ακριβώς ένας πίνακας |


