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