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.

  • โœ… Principio fondamentale: FindElement restituisce il primo WebElement corrispondente; FindElements restituisce un elenco indicizzato a partire da zero, come un array.
  • โš ๏ธ La gestione delle eccezioni: FindElement genera un'eccezione NoSuchElementException quando non viene trovata alcuna corrispondenza, mentre FindElements restituisce un elenco vuoto anzichรฉ fallire.
  • ๐Ÿงญ Strategie di localizzazione: Scegli tra ID, Nome, Nome della classe, Nome del tag, Testo del collegamento, Testo parziale del collegamento e XPath.
  • ๐Ÿงฉ Focus sull'implementazione: Passare un oggetto By con un valore di localizzazione univoco agli elementi di destinazione in modo affidabile negli script WebDriver.
  • ๐Ÿš€ Applicazione pratica: lavoro Java Gli esempi mostrano come fare clic su un pulsante di opzione e come scorrere un elenco di elementi in una pagina demo.

FindElement di XPath in Selenium

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 vs Trova elementi in Selenium

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

DOMANDE FREQUENTI

Usa il Selenium attese implicite o esplicite Il driver quindi interroga la pagina finchรฉ l'elemento non appare. Le attese esplicite con WebDriverWait e le condizioni previste sono l'approccio piรน affidabile per le pagine dinamiche basate su AJAX.

L'ID รจ il localizzatore piรน veloce e affidabile perchรฉ i browser lo indicizzano direttamente. I selettori CSS sono generalmente piรน veloci di XPath, quindi riserva XPath ai casi in cui non sia disponibile un ID, un nome o una classe univoci.

Sรฌ. Gli assistenti di test basati sull'intelligenza artificiale possono analizzare il DOM e suggerire automaticamente localizzatori XPath o CSS stabili, riducendo i tempi di ispezione manuale. RevI localizzatori generati sono stati verificati per garantirne l'unicitร  prima di essere aggiunti alle suite di test di produzione.

I framework di auto-riparazione utilizzano l'intelligenza artificiale per rilevare quando un localizzatore smette di funzionare dopo una modifica dell'interfaccia utente e lo sostituiscono automaticamente con l'elemento piรน simile. Ciรฒ riduce la manutenzione dei test causata dalla frequente modifica degli attributi degli elementi.

Riassumi questo post con: