NajítPrvek pomocí XPath v Selenium

⚡ Chytré shrnutí

NajítPrvek pomocí XPath v Selenium jednoznačně identifikuje jeden webový element na stránce, zatímco FindElements vrací kompletní seznam odpovídajících elementů. Oba příkazy akceptují objekt lokátoru By, který zahrnuje strategie ID, Name, Class Name a XPath.

  • (Tj. Základní princip: Funkce FindElement vrací první odpovídající WebElement; funkce FindElements vrací seznam indexovaný od nuly, podobně jako pole.
  • ⚠️ Zpracování výjimek: Funkce FindElement vyvolá výjimku NoSuchElementException, pokud neexistuje žádná shoda, zatímco funkce FindElements vrátí prázdný seznam místo selhání.
  • 🧭 Strategie lokátoru: Vyberte z možností ID, Název, Název třídy, Název tagu, Text odkazu, Částečný text odkazu a XPath.
  • 🧩 Zaměření implementace: Předejte objekt By s jedinečnou hodnotou lokátoru pro spolehlivé cílení prvků ve skriptech WebDriver.
  • ???? Praktická aplikace: Pracovní Java Příklady demonstrují kliknutí na přepínač a iteraci seznamu prvků na demo stránce.

NajítPrvek pomocí XPath v Selenium

In Selenium Webový ovladač, NajítPrvek a NajítPrvky jsou základní příkazy používané k vyhledání webových prvků na stránce před provedením jakékoli akce, jako je kliknutí nebo zadání textu.

Proč potřebujete příkaz Najít prvky?

Interakce s webovou stránkou vyžaduje, aby uživatel nejprve webový prvek našel. Příkaz Najít prvek se používá k jednoznačné identifikaci jednoho webového prvku v rámci webové stránky, zatímco příkaz Najít prvky se používá k identifikaci seznamu webových prvků. Prvek lze identifikovat pomocí více strategie lokátoru například ID, název, název třídy, text odkazu, částečný text odkazu, název tagu a XPath.

Syntaxe příkazu FindElement

Níže je uvedena syntaxe příkazu FindElement v Selenium WebDriver:

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

Příkaz FindElement bere objekt By jako parametr a vrací jeden objekt typu WebElement. Objekt By lze zase použít s různými strategiemi lokace, jako je ID, název, název třídy, XPath atd.

Strategie lokátoru může nabývat libovolné z následujících hodnot:

  • ID
  • Jméno
  • Jméno třídy
  • Název štítku
  • Text odkazu
  • Částečný text odkazu
  • XPath

Hodnota lokátoru je jedinečná hodnota, pomocí které lze identifikovat webový prvek. Je odpovědností vývojářů a testerů zajistit, aby webové prvky byly jedinečně identifikovatelné pomocí určitých vlastností, jako je ID nebo název.

Příklad:

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

Příklad: Najít prvek v Selenium

Následující demo aplikace ukazuje příkaz FindElement v akci:

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

Scénář:

Krok 1: Otevřete AUT

Krok 2: Najděte a klikněte na přepínač a poté klikněte na tlačítko Zaškrtnout

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();

}

}

Syntaxe příkazu FindElements

Pokud potřebujete najít všechny prvky, které odpovídají lokátoru, a ne jen první, použijte funkci FindElements. Níže je uvedena její syntaxe:

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

Příkaz FindElements bere jako parametr objekt By a vrací seznam webových prvků. Pokud s použitím dané strategie lokátoru a hodnoty lokátoru nebyly nalezeny žádné prvky, vrátí prázdný seznam.

Příklad:

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

Příklad: Najít prvky v Selenium

Stejná demo aplikace se používá k ukázce, jak FindElements iteruje přes seznam odpovídajících prvků.

Scénář:

Krok 1: Otevřete URL pro testovanou aplikaci

Krok 2: Najděte text přepínačů a vytiskněte ho do výstupní konzole

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"));
    }
  }
}

Najít prvek vs. Najít prvky

Níže jsou uvedeny hlavní rozdíly mezi příkazy Najít prvek a Najít prvky:

Najít prvek vs. Najít prvky v Selenium

Najít prvek Najít prvky
Vrátí první webový element, pokud je nalezeno více webových elementů se stejným lokátorem. Vrátí seznam prvků webu
Vyvolá výjimku NoSuchElementException, pokud neexistují žádné prvky odpovídající strategii lokátoru. Vrátí prázdný seznam, pokud neexistují žádné webové prvky odpovídající strategii lokátoru
Najít prvek pomocí XPath najde pouze jeden webový prvek Najde kolekci prvků, které odpovídají strategii lokátoru.
Nelze použít Každý webový prvek je indexován číslem začínajícím od 0, stejně jako pole

Nejčastější dotazy

Použijte Selenium implicitní nebo explicitní čekání Ovladač tedy dotazuje stránku, dokud se element neobjeví. Explicitní čekání s WebDriverWait a očekávanými podmínkami je nejspolehlivějším přístupem pro dynamické stránky řízené technologií AJAX.

ID je nejrychlejší a nejspolehlivější lokátor, protože jej prohlížeče indexují přímo. Selektory CSS jsou obecně rychlejší než XPath, takže XPath si vyhraďte pro případy, kdy není k dispozici žádné jedinečné ID, název nebo třída.

Ano. Testovací asistenti s umělou inteligencí dokáží analyzovat DOM a automaticky navrhovat stabilní lokátory XPath nebo CSS, čímž se zkrátí doba manuální kontroly. RevPřed přidáním do produkčních testovacích sad si prohlédněte vygenerované lokátory z hlediska jedinečnosti.

Samoopravné frameworky využívají umělou inteligenci k detekci selhání lokátoru po změně uživatelského rozhraní a k automatickému nahrazení nejbližším odpovídajícím prvkem. To snižuje náročnost testování způsobenou často se měnícími atributy prvků.

Shrňte tento příspěvek takto: