Găsiți elemente după textul linkului & Text de legătură parțială în Selenium Webdriver

Cuprins:

Anonim

Ce este textul legăturii în seleniu?

Un text de legătură în seleniu este utilizat pentru a identifica hyperlinkurile de pe o pagină web. Se determină cu ajutorul unei etichete de ancorare. Pentru crearea hyperlinkurilor pe o pagină web, putem utiliza o etichetă de ancorare urmată de linkul Text.

Link-uri care corespund unui criteriu

Link-urile pot fi accesate utilizând o potrivire exactă sau parțială a textului linkului lor. Exemplele de mai jos oferă scenarii în care ar exista mai multe potriviri și ar explica modul în care WebDriver le-ar face față.

În acest tutorial, vom învăța metodele disponibile pentru a găsi și accesa link-urile folosind Webdriver. De asemenea, vom discuta despre unele dintre problemele obișnuite cu care se confruntă în timpul accesării Link-urilor și vom discuta în continuare despre cum să le rezolvăm.

Iată ce veți învăța-

  • Accesarea linkurilor folosind potrivirea exactă a textului: By.linkText ()
  • Accesarea linkurilor folosind Partial Text Match: By.partialLinkText ()
  • Cum să obțineți mai multe linkuri cu același text de link
  • Sensibilitate la majuscule și minuscule pentru textul linkului
  • Linkuri în exterior și în interiorul unui bloc

Accesarea linkurilor folosind potrivirea exactă a textului: By.linkText ()

Accesarea link-urilor folosind textul exact al acestora se face prin metoda By.linkText () . Cu toate acestea, dacă există două linkuri care au același text de legătură, această metodă va accesa doar prima. Luați în considerare codul HTML de mai jos

Când încercați să rulați codul WebDriver de mai jos, veți accesa primul link „faceți clic aici”

Cod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;clasă publică MyClass {public static main main (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nou ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("click aici")). click ();System.out.println ("titlul paginii este: + driver.getTitle ());driver.quit ();}}

Iată cum funcționează-

Drept urmare, veți fi condus automat la Google.

Accesarea linkurilor folosind Partial Text Match: By.partialLinkText ()

Accesarea linkurilor folosind o parte din textul link-ului lor se face folosind metoda By.partialLinkText () . Dacă specificați un text de legătură parțială care are mai multe potriviri, va fi accesat doar primul meci. Luați în considerare codul HTML de mai jos.

Când executați codul WebDriver de mai jos, veți fi dus în continuare la Google.

Cod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;clasa publica P1 {public static main main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nou ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("aici")). faceți clic pe ();System.out.println ("Titlul paginii este: + driver.getTitle ());driver.quit ();}}

Cum să obțineți mai multe linkuri cu același text de link

Deci, cum să rezolve problema de mai sus? În cazurile în care există mai multe link-uri cu același text al link-ului și dorim să accesăm link-urile altele decât primul, cum o facem?

În astfel de cazuri, în general, se utilizează diferite localizatoare și anume ... By.xpath (), By.cssSelector () sau By.tagName ().

Cel mai frecvent utilizat este By.xpath (). Este cel mai fiabil, dar arată și complex și nu poate fi citit.

Sensibilitate la majuscule și minuscule pentru textul linkului

Parametrii pentru By.linkText () și By.partialLinkText () sunt ambii sensibili la majuscule, ceea ce înseamnă că majuscula contează. De exemplu, în pagina de pornire a lui Mercury Tours, există două linkuri care conțin textul „egis” - unul este linkul „REGISTRARE” din meniul de sus, iar celălalt este linkul „Înregistrați-vă aici” aflat în partea din dreapta jos. a paginii.

Deși ambele linkuri conțin secvența de caractere „egis”, una este metoda „By.partialLinkText ()”, va accesa aceste două linkuri separat, în funcție de scrierea cu majusculă a caracterelor. Consultați exemplul de cod de mai jos.

Cod

public static main main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nou ChromeDriver ();driver.get (baseUrl);String theLinkText = driver.findElement (By.partialLinkText („egis”)).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (By.partialLinkText („EGIS”)).getText ();System.out.println (theLinkText);driver.quit ();}

Linkuri în exterior și în interiorul unui bloc

Cel mai recent standard HTML5 permite plasarea etichetelor în interiorul și în afara etichetelor la nivel de bloc, cum ar fi

,

sau

. Metodele „By.linkText ()” și „By.partialLinkText ()” pot accesa un link situat în afara și în interiorul acestor elemente la nivel de bloc. Luați în considerare codul HTML de mai jos.

Codul WebDriver de mai jos accesează ambele legături utilizând metoda By.partialLinkText ().

Cod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;clasă publică MyClass {public static main main (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nou ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). click ();System.out.println (driver.getTitle ());driver.navigate (). back ();driver.findElement (By.partialLinkText ("Outside")). click ();System.out.println (driver.getTitle ());driver.quit ();}}

Rezultatul de mai sus confirmă faptul că ambele linkuri au fost accesate cu succes, deoarece titlurile paginilor respective au fost recuperate corect.

rezumat

  • Linkurile sunt accesate folosind metoda click ().
  • În afară de localizatoarele disponibile pentru orice WebElement, link-urile au și localizatoare bazate pe textul linkurilor:
    • By.linkText () - localizează linkurile pe baza potrivirii exacte a textului linkului furnizat ca parametru.
    • By.partialLinkText () - localizează link-uri pe baza potrivirii parțiale a textului link-ului.
  • Ambele localizatoare de mai sus sunt sensibile la majuscule.
  • Dacă există mai multe potriviri, By.linkText () și By.partialLinkText () vor selecta doar prima potrivire. În astfel de cazuri în care sunt prezente mai multe legături cu același text de legătură, se utilizează alte localizatoare bazate pe xpath, CSS.
  • metoda findElements () & By.tagName ("a") găsește toate elementele din pagină care corespund criteriilor de localizare
  • Linkurile pot fi accesate de By.linkText () și By.partialLinkText () indiferent dacă sunt în interiorul sau în afara elementelor la nivel de bloc.