Linkkiteksti ja osittainen linkkiteksti sisään Selenium
Mitä linkkiteksti sisältää Selenium?
A Linkki teksti sisään Selenium käytetään tunnistamaan web-sivun hyperlinkit. Se määritetään ankkuritunnisteen avulla. Hyperlinkkien luomiseen web-sivulle voimme käyttää ankkuritunnistetta, jota seuraa linkki Teksti.
Kriteeriä vastaavat linkit
Linkkejä voidaan käyttää käyttämällä niiden linkkitekstiä täsmällisesti tai osittain. Alla olevat esimerkit tarjoavat skenaarioita, joissa olisi useita osumia, ja selittävät, kuinka WebDriver käsittelee niitä.
Tässä opetusohjelmassa opimme käytettävissä olevat menetelmät löytää ja käyttää linkkejä Webdriverin avulla. Keskustelemme myös joistakin yleisistä ongelmista, joita kohtaat linkkien käytön aikana, ja keskustelemme edelleen niiden ratkaisemisesta.
Täydellinen linkin teksti sisään Selenium – By.linkText()
Linkkien käyttäminen niiden tarkalla linkkitekstillä tapahtuu By.linkText() -menetelmän kautta. Jos kuitenkin on kaksi linkkiä, joilla on sama linkkiteksti, tämä menetelmä käyttää vain ensimmäistä. Harkitse alla olevaa HTML-koodia
Kun yrität suorittaa alla olevan WebDriver-koodin, pääset ensimmäiseen "napsauta tästä" -linkkiä
Koodi:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.linkText("click here")).click(); System.out.println("title of page is: " + driver.getTitle()); driver.quit(); } }
Näin se toimii -
Tämän seurauksena sinut ohjataan automaattisesti Googleen.
Täydellinen osittainen linkin teksti Selenium – By.partialLinkText()
Linkkien käyttäminen käyttämällä osaa niiden linkkitekstistä tapahtuu käyttämällä By.partialLinkText() menetelmä. Jos määrität osittaisen linkkitekstin, jossa on useita osumia, vain ensimmäinen vastaavuus otetaan käyttöön. Harkitse alla olevaa HTML-koodia.
Kun suoritat alla olevan WebDriver-koodin, sinut ohjataan edelleen Googleen.
Koodi:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class P1 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/accessing-link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("here")).click(); System.out.println("Title of page is: " + driver.getTitle()); driver.quit(); } }
Kuinka saada useita linkkejä samalla linkkitekstillä
Joten kuinka kiertää yllä oleva ongelma? Tapauksissa, joissa on useita linkkejä samalla linkkitekstillä ja haluamme käyttää muita linkkejä kuin ensimmäistä, miten toimitaan?
Tällaisissa tapauksissa käytetään yleensä erilaisia paikantimia, nimittäin… By.xpath(), By.cssSelector() tai By.tagName().
Yleisimmin käytetty on By.xpath(). Se on luotettavin, mutta se näyttää myös monimutkaiselta ja lukemattomalta.
Kirjainkoon erottelu linkkitekstissä
Parametrit kohteelle By.linkText() ja By.partialLinkText() molemmissa kirjainkoolla on merkitystä, mikä tarkoittaa, että isoilla kirjaimilla on merkitystä. Esimerkiksi sisään Mercury Toursin kotisivulla on kaksi linkkiä, jotka sisältävät tekstin "egis" - yksi on "REKISTERÖI"-linkki ylävalikosta ja toinen "Rekisteröidy" -linkki, joka löytyy sivun oikeasta alakulmasta.
Vaikka molemmat linkit sisältävät merkkijonon "egis", toinen on "By.partialLinkText()" -menetelmä, joka käyttää näitä kahta linkkiä erikseen riippuen merkkien isoista kirjaimista. Katso esimerkkikoodi alta.
Koodi
public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new 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(); }
Linkit lohkon ulkopuolelle ja sisällä
Uusin HTML5-standardi mahdollistaa tunnisteiden sijoittamisen lohkotason tunnisteiden, kuten , tai , sisään ja ulkopuolelle . "By.linkText()" ja "By.partialLinkText()" -menetelmät voivat käyttää linkkiä, joka sijaitsee näiden lohkotason elementtien ulkopuolella ja sisällä. Harkitse alla olevaa HTML-koodia.
Alla oleva WebDriver-koodi käyttää molempia linkkejä käyttämällä By.partialLinkText()-menetelmää.
Koodi:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/block.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new 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(); } }
Yllä oleva tulos vahvistaa, että molempien linkkien käyttö onnistui, koska niiden vastaavat sivuotsikot haettiin oikein.
Yhteenveto
- Linkkejä käytetään click()-menetelmällä.
- WebElementille saatavilla olevien paikantimien lisäksi Linkeissä on myös linkkitekstipohjaisia paikantimia:
- By.linkText() – paikantaa linkit parametrina annetun linkin tekstin tarkan vastaavuuden perusteella.
- By.partialLinkText() – paikantaa linkit linkin tekstin osittaisen tekstivastaavuuden perusteella.
- Molemmat yllä olevat paikantimet ovat kirjainkoolla herkkiä.
- Jos osumia on useita, By.linkText() ja By.partialLinkText() valitsevat vain ensimmäisen vastaavuuden. Tällaisissa tapauksissa, joissa on useita linkkejä, joissa on sama linkkiteksti, käytetään muita xpath-, CSS-pohjaisia paikantimia.
- findElements() & By.tagName("a") -menetelmä löytää kaikki sivun elementit, jotka vastaavat paikannusehtoja
- Linkkejä voidaan käyttää By.linkText()- ja By.partialLinkText()-komennoilla riippumatta siitä, ovatko ne lohkotason elementtien sisällä tai ulkopuolella.