Utilizarea Relative Locators în Selenium: Simplificarea identificării elementelor
În automatizarea testelor cu Selenium, identificarea corectă a elementelor pe o pagină web este esențială pentru a asigura o testare stabilă și eficientă. O abordare inovatoare și utilă în acest sens este utilizarea Relative Locators, care facilitează găsirea elementelor în funcție de poziția relativă față de alte elemente. Acest articol va explora conceptul de Relative Locators și va furniza exemple de cod pentru a ilustra modul în care acestea pot fi utilizate în Selenium.
Ce sunt Relative Locators?
Relative Locators sunt o caracteristică introdusă în Selenium 4, care permite identificarea elementelor pe baza relației lor spațiale față de alte elemente. Acest lucru este deosebit de util în situații în care identificarea directă a unui element poate fi dificilă, dar poziția sa relativă față la alte elemente este cunoscută. Oferă o modalitate elegantă și eficientă de a identifica elemente pe baza relației lor spațiale față de alte elemente. Acest lucru poate facilita procesul de automatizare a testelor, în special în scenarii complexe. Integrarea Relative Locators în Selenium 4 aduce o valoare adăugată dezvoltatorilor de teste automate, sporind flexibilitatea și ușurând întreținerea testelor.
Există mai multe tipuri de Relative Locators în Selenium, printre care se numără:
above()
: Găsește un element situat deasupra unui alt element.below()
: Găsește un element situat sub un alt element.toLeftOf()
: Găsește un element situat în stânga altui element.toRightOf()
: Găsește un element situat în dreapta altui element.near()
: Găsește un element aflat în proximitatea altui element.
Exemplu de Relative Locators în Selenium
Scenariul nostru va viza găsirea unui câmp de introducere în funcție de poziția sa relativă față de un alt element. Pentru ilustrare, vom utiliza limbajul de programare Java în combinație cu Selenium.
Vom considera un scenariu în care trebuie să identificăm un element input
aflat în apropierea unui alt element pe o pagină web. Pentru a ilustra, vom utiliza Java în combinație cu Selenium. De asemenea, vom integra metodele setup()
și teardown()
pentru a asigura o gestionare corespunzătoare a sesiunilor de test.
În testul de mai jos, exemplificăm puterea și versatilitatea locatorilor relativi în Selenium. Folosind Relative Locator near()
, identificăm un câmp de introducere situat în apropierea a două elemente de referință, un logo de imagine și un buton, evidențiind astfel capacitatea de a localiza elemente în funcție de relația lor spațială pe pagină. De asemenea, în acest exemplu, am demonstrat utilizarea metodei toRightOf
și toLeftOf
, care completează gama de opțiuni oferite de locatorii relativi. Aceste abordări simplifică semnificativ procesul de identificare a elementelor și adaugă flexibilitate în cadrul testelor automate.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.locators.RelativeLocator;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class RelativeLocatorNearExample {
private WebDriver driver;
@BeforeClass
public void setup() {
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://keyfood.ro/");
}
@Test
public void nearLocatorTest() {
// Identificarea elementului de referință (de exemplu, un label)
WebElement referenceElement = driver.findElement(By.cssSelector("img[class*='desktop-logo']"));
// Identificarea elementului de referință (de exemplu, un label)
WebElement referenceElement2 = driver.findElement(By.cssSelector("div[class='button-icon']"));
// Utilizarea Relative Locator `near()` pentru a găsi un câmp de introducere în apropierea elementului de referință
WebElement inputField = driver.findElement(RelativeLocator.with(By.xpath("//input")).near(referenceElement, 300).near(referenceElement2, 300));
// Interacțiunea cu elementul găsit
inputField.sendKeys("Hello, Near Locator!");
//Stergerea textului din input
inputField.clear();
//Aceasi interactiune de data aceasta cu Relative Locator toRightOf si toLeftOf
WebElement newInputField = driver.findElement(RelativeLocator.with(By.xpath("//input")).toRightOf(referenceElement).toLeftOf(referenceElement2));
// Interacțiunea cu elementul găsit
newInputField.sendKeys("Hello, toLeftOf and toRightOf Locators!");
}
@AfterClass
public void tearDown(){
// Închiderea browser-ului
if (driver != null) {
driver.quit();
}
}
}
Locatorii relativi reprezintă o adiție semnificativă în arsenalul unui tester, facilitând identificarea eficientă a elementelor pe baza relației lor spațiale. În exemplul nostru, Relative Locator near()
a permis găsirea unui câmp de introducere în apropierea a două elemente distincte, simplificând astfel codul și îmbunătățind rezistența la modificări ale structurii paginii web. Această funcționalitate este deosebit de valoroasă în scenariile în care identificarea directă a elementelor poate fi dificilă sau nesustenabilă.
Prin urmare, implementarea locatorilor relativi în teste automate cu Selenium aduce beneficii semnificative, crescând eficiența și menținând stabilitatea testelor pe termen lung.
Codul poate fi gasit aici : github.com