Linktekst en gedeeltelijke linktekst in Selenium
โก Slimme samenvatting
Linktekst en gedeeltelijke linktekst in Selenium Zoek hyperlinks op een webpagina aan de hand van hun ankertekst. De methode By.linkText() zoekt naar de exacte tekst, terwijl By.partialLinkText() naar een gedeelte zoekt. Beide methoden zijn hoofdlettergevoelig en retourneren de eerste overeenkomst.

Waar zit linktekst in Selenium?
A Link tekst in Selenium wordt gebruikt om de hyperlinks op een webpagina te identificeren. Het wordt bepaald met behulp van een ankertag. Voor het maken van hyperlinks op een webpagina kunnen we een ankertag gebruiken, gevolgd door de link Tekst.
Links die voldoen aan een criterium
Links zijn toegankelijk via een exacte of gedeeltelijke overeenkomst van de linktekst. De onderstaande voorbeelden geven scenario's waarin er meerdere overeenkomsten zouden bestaan โโen leggen uit hoe WebDriver hiermee zou omgaan.
In deze tutorial leren we de beschikbare methoden om de links te vinden en te openen met behulp van Webdriver. Ook zullen we enkele van de veelvoorkomende problemen bespreken die u tegenkomt bij het openen van Links, en zullen we verder bespreken hoe u deze kunt oplossen.
Volledige linktekst in Selenium โ Door.linkText()
Toegang krijgen tot links met behulp van hun exacte linktekst gebeurt via de By.linkText() methode. Als er echter twee links zijn die dezelfde linktekst hebben, heeft deze methode alleen toegang tot de eerste. Beschouw de onderstaande HTML-code
Wanneer u de onderstaande WebDriver-code probeert uit te voeren, krijgt u toegang tot de eerste 'klik hier'-link
Code:
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(); } }
Hier is hoe het werkt-
Hierdoor wordt u automatisch doorgestuurd naar Google.
Voltooi de gedeeltelijke linktekst in Selenium โ By.partialLinkText()
Toegang krijgen tot links met behulp van een deel van hun linktekst gebeurt met behulp van de Door.partialLinkText() methode. Als u een gedeeltelijke linktekst opgeeft die meerdere overeenkomsten heeft, wordt alleen de eerste overeenkomst geopend. Beschouw de onderstaande HTML-code.
Als u de onderstaande WebDriver-code uitvoert, wordt u nog steeds doorgestuurd naar Google.
Code:
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(); } }
Hoe u meerdere links met dezelfde linktekst kunt krijgen
Dus, hoe omzeil je het bovenstaande probleem? In gevallen waarin er meerdere links zijn met dezelfde linktekst en we toegang willen tot andere links dan de eerste, hoe gaan we dat dan doen?
In dergelijke gevallen worden doorgaans verschillende locators gebruikt, namelijk By.xpath(), By.cssSelector() of By.tagName().
Het meest gebruikt is By.xpath(). Dit is de meest betrouwbare, maar het ziet er complex en onleesbaar uit.
Hoofdlettergevoeligheid voor linktekst
De parameters voor Door.linkText() en Door.partialLinkText() zijn beide hoofdlettergevoelig, wat betekent dat hoofdlettergebruik ertoe doet. Bijvoorbeeld, binnen Mercury Op de startpagina van Tours zijn er twee links die de tekst โegisโ bevatten โ de ene is de link โREGISTRERENโ in het bovenste menu, en de andere is de link โRegistreer hierโ rechtsonder op de pagina.
Hoewel beide links de tekenreeks "egis" bevatten, zal de methode "By.partialLinkText()" deze twee links afzonderlijk benaderen, afhankelijk van het hoofdlettergebruik van de tekens. Zie de onderstaande voorbeeldcode.
Code
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(); }
Links buiten en binnen een blok
Met de nieuwste HTML5-standaard kunnen tags binnen en buiten tags op blokniveau worden geplaatst, zoals , , of . De methoden โBy.linkText()โ en โBy.partialLinkText()โ hebben toegang tot een link die zich buiten en binnen deze elementen op blokniveau bevindt. Beschouw de onderstaande HTML-code.
De onderstaande WebDriver-code heeft toegang tot beide links met behulp van de By.partialLinkText()-methode.
Code:
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(); } }
De bovenstaande uitvoer bevestigt dat beide links met succes zijn geopend omdat hun respectieve paginatitels correct zijn opgehaald.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)