FindElement av XPath i Selenium

โšก Smart sammanfattning

FindElement av XPath i Selenium identifierar unikt ett enskilt webbelement pรฅ en sida, medan FindElements returnerar en komplett lista รถver matchande element. Bรฅda kommandona accepterar ett By locator-objekt som tรคcker strategierna ID, Name, Class Name och XPath.

  • โœ… Kรคrnprincip: FindElement returnerar det fรถrsta matchande WebElementet; FindElements returnerar en lista indexerad frรฅn noll, som en array.
  • โš ๏ธ Undantagshantering: FindElement utlรถser NoSuchElementException nรคr ingen matchning finns, medan FindElements returnerar en tom lista istรคllet fรถr att misslyckas.
  • ๐Ÿงญ Lokaliseringsstrategier: Vรคlj mellan ID, Namn, Klassnamn, Taggnamn, Lรคnktext, Delvis lรคnktext och XPath.
  • ๐Ÿงฉ Implementeringsfokus: Skicka ett By-objekt med ett unikt lokaliseringsvรคrde fรถr att pรฅlitligt hitta element i WebDriver-skript.
  • ๐Ÿš€ Praktisk applikation: Arbeta Java Exempel visar hur man klickar pรฅ en alternativknapp och itererar en lista med element pรฅ en demosida.

FindElement av XPath i Selenium

In Selenium Webbdrivrutin, HittaElement och Hitta element รคr de kรคrnkommandon som anvรคnds fรถr att hitta webbelement pรฅ en sida innan nรฅgon รฅtgรคrd, som ett klick eller textinmatning, kan utfรถras pรฅ dem.

Varfรถr behรถver du kommandot Find Element(s)?

Interaktion med en webbsida krรคver att anvรคndaren fรถrst lokaliserar webbelementet. Kommandot Hitta element anvรคnds fรถr att unikt identifiera ett webbelement pรฅ webbsidan, medan kommandot Hitta element anvรคnds fรถr att identifiera en lista med webbelement. Ett element kan identifieras med hjรคlp av flera lokaliseringsstrategier sรฅsom ID, Namn, Klassnamn, Lรคnktext, Delvis lรคnktext, Taggnamn och XPath.

FindElement kommandosyntax

Nedan fรถljer syntaxen fรถr FindElement-kommandot i Selenium WebDriver:

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

Kommandot FindElement tar By-objektet som parameter och returnerar ett enda objekt av typen WebElement. By-objektet kan i sin tur anvรคndas med olika lokaliseringsstrategier som ID, namn, klassnamn, XPath etc.

Lokaliseringsstrategin kan vara vilket som helst av fรถljande vรคrden:

  • ID
  • Namn
  • Klassnamn
  • Taggnamn
  • Lรคnktext
  • Partiell lรคnktext
  • XPath

Locator Value รคr det unika vรคrde med vilket ett webbelement kan identifieras. Det รคr utvecklares och testares ansvar att se till att webbelement รคr unikt identifierbara med hjรคlp av vissa egenskaper som ID eller namn.

Exempel:

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

Exempel: Hitta element i Selenium

Fรถljande demoprogram anvรคnds fรถr att visa FindElement-kommandot i praktiken:

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

Scenario:

Steg 1: ร–ppna AUT

Steg 2: Hitta och klicka pรฅ radioknappen och klicka sedan pรฅ knappen Markera

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 kommandosyntax

Nรคr du behรถver alla element som matchar en locator snarare รคn bara det fรถrsta, anvรคnd FindElements. Nedan fรถljer dess syntax:

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

Kommandot FindElements tar By-objektet som parameter och returnerar en lista med webbelement. Det returnerar en tom lista om inga element hittas med den angivna lokaliseringsstrategin och lokaliseringsvรคrdet.

Exempel:

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

Exempel: Hitta element i Selenium

Samma demoapplikation anvรคnds fรถr att visa hur FindElements itererar รถver en lista med matchande element.

Scenario:

Steg 1: ร–ppna URL fรถr tillรคmpning under test

Steg 2: Hitta texten fรถr radioknapparna och skriv ut den pรฅ utdatakonsolen

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

Hitta element vs Hitta element

Nedan fรถljer de viktigaste skillnaderna mellan kommandona Hitta element och Hitta element:

Hitta element vs Hitta element i Selenium

Hitta element Hitta element
Returnerar det fรถrsta webbelementet om det finns flera webbelement med samma positionerare Returnerar en lista med webbelement
Utlรถser undantaget NoSuchElementException om det inte finns nรฅgra element som matchar lokaliseringsstrategin. Returnerar en tom lista om det inte finns nรฅgra webbelement som matchar lokaliseringsstrategin
Hitta element med XPath hittar bara ett webbelement Den kommer att hitta en samling element som matchar lokaliseringsstrategin
Ej tillรคmplig Varje webbelement indexeras med ett nummer som bรถrjar pรฅ 0, precis som en array

Vanliga frรฅgor

Anvรคnda Selenium implicita eller explicita vรคntningar sรฅ avsรถker drivrutinen sidan tills elementet visas. Explicita vรคntetider med WebDriverWait och fรถrvรคntade villkor รคr den mest tillfรถrlitliga metoden fรถr dynamiska, AJAX-drivna sidor.

ID รคr den snabbaste och mest pรฅlitliga sรถkaren eftersom webblรคsare indexerar den direkt. CSS-vรคljare รคr generellt snabbare รคn XPath, sรฅ reservera XPath fรถr fall dรคr inget unikt ID, namn eller klass รคr tillgรคngligt.

Ja. AI-drivna testassistenter kan analysera DOM och automatiskt fรถreslรฅ stabila XPath- eller CSS-lokaliseringar, vilket minskar tiden fรถr manuell inspektion. RevVisa genererade lokaliseringsverktyg fรถr unikhet innan de lรคggs till i produktionstestsviter.

Sjรคlvlรคkande ramverk anvรคnder AI fรถr att upptรคcka nรคr en locator gรฅr sรถnder efter en UI-รคndring och ersรคtter automatiskt det nรคrmast matchande elementet. Detta minskar testunderhรฅll som orsakas av ofta รคndrade elementattribut.

Sammanfatta detta inlรคgg med: