Find elementer efter linktekst & Delvis linktekst i Selen Webdriver

Indholdsfortegnelse:

Anonim

Hvad er linktekst i selen?

En linktekst i selen bruges til at identificere hyperlinks på en webside. Det bestemmes ved hjælp af et ankermærke. Til oprettelse af hyperlinks på en webside kan vi bruge et ankertag efterfulgt af linket Tekst.

Links, der matcher et kriterium

Links kan tilgås ved hjælp af en nøjagtig eller delvis matchning af deres linktekst. Eksemplerne nedenfor giver scenarier, hvor der findes flere match, og forklarer, hvordan WebDriver ville håndtere dem.

I denne vejledning lærer vi de tilgængelige metoder til at finde og få adgang til Links ved hjælp af Webdriver. Vi vil også diskutere nogle af de almindelige problemer, der står overfor, når vi åbner Links, og vil diskutere yderligere, hvordan man løser dem.

Her er hvad du vil lære -

  • Adgang til links ved hjælp af Exact Text Match: By.linkText ()
  • Adgang til links ved hjælp af Partial Text Match: By.partialLinkText ()
  • Sådan får du flere links med den samme linktekst
  • Skift mellem store og små bogstaver for linktekst
  • Links udenfor og inde i en blok

Adgang til links ved hjælp af Exact Text Match: By.linkText ()

Adgang til links ved hjælp af deres nøjagtige linktekst sker via metoden By.linkText () . Men hvis der er to links, der har den samme linktekst, får denne metode kun adgang til den første. Overvej HTML-koden nedenfor

Når du prøver at køre WebDriver-koden nedenfor, får du adgang til det første "klik her" -link

Kode:

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse MyClass {public static void main (String [] args) {Streng baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-driver = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("klik her")). klik ();System.out.println ("sidens titel er: + driver.getTitle ());driver.quit ();}}

Sådan fungerer det -

Som et resultat føres du automatisk til Google.

Adgang til links ved hjælp af Partial Text Match: By.partialLinkText ()

Adgang til links ved hjælp af en del af deres linktekst sker ved hjælp af By.partialLinkText () -metoden. Hvis du angiver en delvis linktekst, der har flere matches, får du kun adgang til det første match. Overvej HTML-koden nedenfor.

Når du udfører WebDriver-koden nedenfor, føres du stadig til Google.

Kode:

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse P1 {public static void main (String [] args) {Streng baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-driver = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("her")). klik ();System.out.println ("Sidens titel er: + driver.getTitle ());driver.quit ();}}

Sådan får du flere links med den samme linktekst

Så hvordan man kan omgå ovenstående problem? I tilfælde, hvor der er flere links med den samme linktekst, og vi ønsker at få adgang til andre links end den første, hvordan skal vi gøre det?

I sådanne tilfælde anvendes generelt forskellige lokalisatorer, nemlig ... By.xpath (), By.cssSelector () eller By.tagName ().

Mest anvendt er By.xpath (). Det er den mest pålidelige, men den ser også kompleks og ikke-læsbar ud.

Skift mellem store og små bogstaver for linktekst

Parametrene for By.linkText () og By.partialLinkText () er begge store og små bogstaver, hvilket betyder, at store bogstaver betyder. For eksempel på Mercury Tours 'hjemmeside er der to links, der indeholder teksten "egis" - den ene er "REGISTER" -linket, der findes i topmenuen, og den anden er "Registrer her" -linket, der findes nederst til højre på siden.

Selvom begge links indeholder tegnsekvensen "egis", er den ene "By.partialLinkText ()" -metoden, der får adgang til disse to links separat afhængigt af tegnens store bogstaver. Se eksempelkoden nedenfor.

Kode

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

Links udenfor og inde i en blok

Den nyeste HTML5-standard tillader, at tags placeres inden for og uden for tags på blokniveau som

,

eller

. Metoderne "By.linkText ()" og "By.partialLinkText ()" kan få adgang til et link placeret uden for og inde i disse elementer på blokniveau. Overvej HTML-koden nedenfor.

WebDriver-koden nedenfor har adgang til begge disse links ved hjælp af By.partialLinkText () -metoden.

Kode:

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse MyClass {public static void main (String [] args) {Streng baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-driver = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). klik ();System.out.println (driver.getTitle ());driver.navigate (). tilbage ();driver.findElement (By.partialLinkText ("Outside")). klik ();System.out.println (driver.getTitle ());driver.quit ();}}

Outputtet ovenfor bekræfter, at begge links blev åbnet med succes, fordi deres respektive sidetitler blev hentet korrekt.

Resumé

  • Links fås ved at bruge metoden click ().
  • Bortset fra de placeringer, der er tilgængelige for ethvert WebElement, har Links også linktekstbaserede lokaliseringer:
    • By.linkText () - lokaliserer linkene baseret på det nøjagtige match af linkets tekst, der er angivet som en parameter.
    • By.partialLinkText () - lokaliserer links baseret på den delvise teksttilpasning af linkets tekst.
  • Begge de ovennævnte lokalisatorer er store og små bogstaver.
  • Hvis der er flere matches, vælger By.linkText () og By.partialLinkText () kun den første kamp. I sådanne tilfælde hvor flere links med den samme linktekst er til stede, anvendes andre lokaliseringer baseret på xpath, CSS.
  • findElements () & By.tagName ("a") -metoden finder alle elementerne på siden, der matcher søgekriterierne
  • Links er tilgængelige via By.linkText () og By.partialLinkText (), uanset om de er inden for eller uden for elementer på blokniveau.