FindElement di XPath in Selenium
โก Riepilogo intelligente
FindElement di XPath in Selenium Il comando `FindElements` identifica in modo univoco un singolo elemento web su una pagina, mentre `FindElements` restituisce un elenco completo degli elementi corrispondenti. Entrambi i comandi accettano un oggetto localizzatore `By` che copre le strategie ID, Nome, Nome classe e XPath.
In Selenium WebDriver, TrovaElemento and TrovaElementi sono i comandi principali utilizzati per individuare gli elementi web su una pagina prima che sia possibile eseguire qualsiasi azione su di essi, come un clic o l'inserimento di testo.
Perchรฉ รจ necessario il comando Trova elemento/i?
L'interazione con una pagina web richiede che l'utente individui prima l'elemento web. Il comando Trova elemento viene utilizzato per identificare in modo univoco un elemento web all'interno della pagina web, mentre il comando Trova elementi viene utilizzato per identificare un elenco di elementi web. Un elemento puรฒ essere identificato utilizzando piรน strategie di localizzazione come ID, Nome, Nome della classe, Testo del collegamento, Testo parziale del collegamento, Nome del tag e XPath.
Sintassi del comando FindElement
Di seguito รจ riportata la sintassi del comando FindElement in Selenium Driver Web:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Il comando FindElement accetta come parametro l'oggetto By e restituisce un singolo oggetto di tipo WebElement. L'oggetto By, a sua volta, puรฒ essere utilizzato con diverse strategie di localizzazione, come ID, Nome, Nome della classe, XPath, ecc.
La strategia di localizzazione puรฒ assumere uno qualsiasi dei seguenti valori:
- ID
- Nome
- Nome della classe
- Nome tag
- link Text
- Testo del collegamento parziale
- XPath
Il valore di localizzazione รจ il valore univoco che permette di identificare un elemento web. ร responsabilitร degli sviluppatori e dei tester assicurarsi che gli elementi web siano identificabili in modo univoco utilizzando determinate proprietร come ID o nome.
Esempio:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Esempio: Trova elemento in Selenium
La seguente applicazione dimostrativa viene utilizzata per mostrare il comando FindElement in azione:
https://demo.guru99.com/test/ajax.html
Scenario:
Passo 1: Aprire l'AUT
Passo 2: Individua e seleziona il pulsante di opzione, quindi fai clic sul pulsante Verifica
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();
}
}
Sintassi del comando FindElements
Quando hai bisogno di tutti gli elementi che corrispondono a un localizzatore, anzichรฉ solo del primo, usa FindElements. Di seguito la sua sintassi:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Il comando FindElements accetta l'oggetto By come parametro e restituisce un elenco di elementi web. Restituisce un elenco vuoto se non vengono trovati elementi utilizzando la strategia di localizzazione e il valore di localizzazione specificati.
Esempio:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Esempio: Trova elementi in Selenium
La stessa applicazione dimostrativa viene utilizzata per mostrare come FindElements scorre un elenco di elementi corrispondenti.
Scenario:
Passo 1: Aprire il URL per l'applicazione in fase di test
Passo 2: Trova il testo dei pulsanti radio e stampalo sulla console di output
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"));
}
}
}
Trova elemento vs Trova elementi
Di seguito sono riportate le principali differenze tra i comandi Trova elemento e Trova elementi:
| Trova elemento | Trova elementi |
|---|---|
| Restituisce il primo elemento web se vengono trovati piรน elementi web con lo stesso localizzatore | Restituisce un elenco di elementi web |
| Genera l'eccezione NoSuchElementException se non ci sono elementi che corrispondono alla strategia di localizzazione. | Restituisce un elenco vuoto se non sono presenti elementi web che corrispondono alla strategia di localizzazione |
| La ricerca di elementi tramite XPath troverร un solo elemento web | Troverร una raccolta di elementi che corrispondono alla strategia di localizzazione |
| Non Applicabile | Ogni elemento web รจ indicizzato con un numero che parte da 0, proprio come un array |


